Linux基础——Ansible批量自动化管理工具(一)

概念

Ansible是基于python开发,集合了很多优秀运维工具的有点,实现了批量运行命令,部署程序,配置系统等功能的自动化运维管理工具。默认通过SSH协议进行远程命令执行或下发配置,无需部署任何客户端软件,从而使得自动化环境部署变得更加简单。同时可以支持多台主机并行管理,使得管理主机更加敏捷。Ansible是基于模块完成各种任务的。

Ansible服务安装和部署

环境

使用centos7系统,创建三台虚拟机,名称分别为AnsibleWeb01Web02

主机名

IP

备注

Ansible

192.168.200.136

管理服务器

Web01

192.168.200.137

被管理主机

Web02

192.168.200.138

被管理主机

准备

Ansible主机上进行下列操作:

Linux基础——Ansible批量自动化管理工具(一)_第1张图片

//安装依赖包

[root@Ansible ~]# yum -y install ansible

//安装ansible

centos7上,自带云yum,不需要像centos6那样去麻烦的更改yum仓库的配置。只要有外网,就可以安装ansible

Root

的远程

登录

[root@centos ~]# ssh-keygen

//创建密钥对,一直回车即可

Linux基础——Ansible批量自动化管理工具(一)_第2张图片

[root@centos ~]# cd .ssh/

//进入ssh目录,此目录为隐藏目录

[root@centos .ssh]# cat id_rsa.pub > authorized_keys

//将公钥导入到authorized_keys

[root@centos .ssh]# chmod 600 authorized_keys

//更改文件权限

[root@centos .ssh]# cp id_rsa id_rsa_root

//复制一份私钥,更改名称

[root@centos .ssh]# sz id_rsa_root

//将复制的私钥导入到桌面上

Linux基础——Ansible批量自动化管理工具(一)_第3张图片

更改密钥名称为111

新建一个shell连接

Linux基础——Ansible批量自动化管理工具(一)_第4张图片

单机用户身份认证,选择方法为:公钥

Linux基础——Ansible批量自动化管理工具(一)_第5张图片

选中创建的会话,单机连接即可。

Linux基础——Ansible批量自动化管理工具(一)_第6张图片

Linux基础——Ansible批量自动化管理工具(一)_第7张图片

普通用户的远程

登录

[root@centos ~]# useradd xiaofa

//创建小法用户

[root@centos ~]# passwd xiaofa

//为账户设置密码

Linux基础——Ansible批量自动化管理工具(一)_第8张图片

[root@centos ~]# cd /home/xiaofa

//进入创建用户的家目录

[root@centos xiaofa]# cp ~/.ssh/authorized_keys .

//将公钥认证拷贝到当前目录下

[root@centos xiaofa]# chown xiaofa.xiaofa authorized_keys

//更改文件的属主和属组为所创建的用户

[root@centos xiaofa]# su – xiaofa

//切换到xiaofa用户

[xiaofa@centos ~]$ mkdir -p .ssh

//创建.ssh目录

[xiaofa@centos ~]$ mv authorized_keys .ssh/

//将公钥移动到.ssh目录中

[xiaofa@centos ~]$ chmod 700 .ssh/

//赋予.ssh目录700权限

新建一个shell标签

Linux基础——Ansible批量自动化管理工具(一)_第9张图片

Linux基础——Ansible批量自动化管理工具(一)_第10张图片

Linux基础——Ansible批量自动化管理工具(一)_第11张图片

此时的用户登录是没有权限的,什么都做不了

[root@centos ~]# visudo

//进入用户权限编辑,添加创建的用户,并使其免密码登录

Linux基础——Ansible批量自动化管理工具(一)_第12张图片

关闭即生效

Linux基础——Ansible批量自动化管理工具(一)_第13张图片

 [root@Ansible ~]# vim /etc/ssh/sshd_config

//进入主配置文件进行修改参数

Linux基础——Ansible批量自动化管理工具(一)_第14张图片

17:在工作中,1000以下的端口都是固定的,一般不能随便修改。

38:是否允许超级用户远程登录

47:密钥文件位置

65:是否开启密码认证

[root@centos ssh]# systemctl restart sshd

//重启服务,应用配置

[root@centos ssh]# ss -antup | grep sshd

//查看端口是否应用

Linux基础——Ansible批量自动化管理工具(一)_第15张图片

将上面创建的两个登录shell的端口都改成22221,这样,当我们断开这个shell后,是不能进行登录的,因为在配置文件中仅用了root密码登录。这样我们就可以使用创建的用户登录,或者公钥登录。

Linux基础——Ansible批量自动化管理工具(一)_第16张图片

Linux基础——Ansible批量自动化管理工具(一)_第17张图片

Linux基础——Ansible批量自动化管理工具(一)_第18张图片

Sudo审计日志

[root@centos ~]# echo "local2.debug /var/log/sudo.log" >> /etc/rsyslog.conf

[root@centos ~]# echo "Defaults logfile=/var/log/sudo.log" >> /etc/sudoers

[root@centos ~]# systemctl restart rsyslog

Ansible连接方式:

密码密钥

密钥:

[root@centos ~]# ssh 192.168.200.137

//使用ssh远程登录到137,输入yes,输入137的密码

[root@centos ~]# exit

//退出,让Ansible有一个登录记录文件

[root@centos .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.200.137

//将公钥发给137

[root@centos .ssh]# vim /etc/ansible/hosts

//进入ansible的配置文件,在最后一行插入

Linux基础——Ansible批量自动化管理工具(一)_第19张图片

当操作第一个模块是操作这两台,每操作一个模块,就执行里面的指定主机

模块名后续会使用分发范围定义

[root@centos .ssh]# ansible LNMP -m ping

//测试LNMP模块连通情况

Linux基础——Ansible批量自动化管理工具(一)_第20张图片

Linux基础——Ansible批量自动化管理工具(一)_第21张图片

绿色为正常,红色为不通

因为Web02还没有连过,没有输入yes的过程,所以即便密码正确,也不能成功。也就是因为known_hosts中没有记录。

当我们使用ssh连接成功后

Linux基础——Ansible批量自动化管理工具(一)_第22张图片

Ansible常用模块

Ping

模块

[root@ Ansible .ssh]# ansible Web01 -m ping

//测试单主机

[root@ Ansible .ssh]# ansible nginx -m ping

//测试主机组

[root@ Ansible .ssh]# ansible all -m ping

//测试所有被管理主机

Command

模块

能够在远程服务器上执行对应命令,将命令结果返回到屏幕上,但是有

些特殊符号不支持,如:管道,重定向等

[root@ Ansible .ssh]# ansible Web01 -m command -a 'uptime'

//返回Web01(模块名)的uptime

[root@ Ansible .ssh]# ansible Web01 -m command -a 'ls /root'

//查看root目录下的内容

Shell

模块

Shell模块的出现直接代替了command,他不但支持所有命令,还支持管道符等特殊符号。

[root@ Ansible ~]# ansible Web01 -m shell -a 'echo www | grep w'

//屏幕输出www,过滤w

[root@Ansible ~]# ansible Web01 -m shell -a 'echo www >> /root/aaa'

//屏幕输出www追加输出重定向到/root/aaa

[root@ansible ~]# ansible Web01 -m shell -a 'echo 123123 | passwd --stdin yunjisuan'

//更改密码

Cron

模块

crontab时间周期:minute:分钟、hour:小时、day:日期、month:月份、

weekday:周期

crontab任务:job:指明运行的命令是什么

crontab描述:name:定时任务描述

statepresent:添加、absent:移除

crontab用户身份:user:指定定时任务用哪个身份执行

[root@Ansible ~]# ansible all -m cron -a 'minute="*/10" job="/bin/echo hello"

 name="test cron job"'

//每分钟输出十次hello,使用testcronjob身份执行

Copy

模块

src来定义本地源文件路径;dest定义被管理主机文件路径;content使用指

定信息内容生成目标文件

[root@Ansible ~]# ansible Web01 -m copy -a 'src=/etc/hosts dest=/root owner=root mode=640 backup=yes'

///etc/hosts拷贝到/root下,root用户拥有所有权,文件权限为640,备份

[root@Ansible ~]# ansible Web01 -m copy -a 'src=/etc/hosts dest=/root'

//拷贝src源到dest目的下

Linux基础——Ansible批量自动化管理工具(一)_第23张图片

如果分发的是脚本,那么需要先copy过去,然后再使用shell模块激活脚本。

但是这样批量执行脚本,会在目标服务器上残留脚本内容,还需批量删除,所以出现了script模块

Script

模块

将本地脚本复制到管理主机的内存中运行,不会在管理主机留下脚本。

[root@Ansible ~]# ansible Web01 -m script -a '/root/1.sh'

Linux基础——Ansible批量自动化管理工具(一)_第24张图片

Yum

模块

name:指定软件包名字

state状态:present:安装软件包(默认)、absent:卸载软件包

[root@Ansible ~]# ansible Web01 -m yum -a 'name=httpd'

//安装httpd

[root@Ansible ~]# ansible Web01 -m yum -a 'name=httpd state=absent'

//卸载httpd

Service

模块

name:指定服务名字

state状态:started:启动、stopped:停止服务、restarted:重启服务、reloaded:平滑重启

enabled开机自启:true:开机自启、false:开启不自启

[root@Ansible ~]# ansible Web01 -m service -a 'name=firewalld state=started enabled=false'

//开启防火墙,但并不开启自启

User

模块

name:用户名字

comment:指定用户的描述信息

createhome:是否创建家目录

uid:指定用户uid

groups:指定用户的附加组(默认创建和用户同名的组)

password:指定用户的密码

update_password:更新用户的密码

shell:指定用户登录模式:/bin/bash/sbin/nologin

home:指定用户的家目录路径

state状态:present:创建用户(默认)和absent:删除用户

remove:指定state=absent时,确认是否删除:tureflase

[root@Ansible ~]#ansible Web01 -m user -a 'name=yunjisuan comment="welcom to yunjisuan" uid=1066 groups=wheel password=123123 shell=/bin/bash home=/home/yunjisuan'

//创建用户

Setup

模块

查看背管理主机的factsfactsAnsible采集被管理主机设备信息的一

个功能)。每个被管理主机在接收运行管理命令前,都会将自己的相关信息(操作系统版本,IP等)发给控制机

[root@Ansible ~]# ansible Web01 -m setup | head

//查看Web01地址等信息

不通版本的系统可能命令不同,所以会导致使用阻碍。但是使用这些特殊的模块,可以无视不同的系统,达到命令的使用无误。

常用案例

Linux基础——Ansible批量自动化管理工具(一)_第25张图片

你可能感兴趣的:(Linux,linux,自动化,centos)