Ansible之玩转常见运维场景(个人总结)
一、环境描述Ansible管理节点:192.168.1.101
被管理节点1:192.168.1.135
被管理节点2:192.168.1.128
二、Ansible实现
1、实现管理节点和被管理节点免ssh密码
思路:在ansible管理节点上生成一对ssh密钥,并把管理节点的公钥拷贝给被管理节点
1.1、ansible管理节点生成ssh密钥
root@mysql02:~/.ssh# ssh-keygen
https://note.youdao.com/yws/res/1292/65180ABB76894A90B44CC0E7E90BAE98
1.2、拷贝ansible管理节点的公钥文件到被管理主机
1.2.1、在管理节点上将公钥传送到被管理节点上
root@mysql02:~/.ssh# ssh-copy-id root@192.168.1.135
说明:id_rsa.pub文件为公钥文件,id_rsa为私钥文件
1.2.3、如果不做ssh免密码,在管理节点上进行让被管理节点执行hostname命令,则出现如下错误
https://note.youdao.com/yws/res/1299/29CEF00667C0471196BB4D622FC0EE4C
1.2.4、将管理节点的ssh公钥拷贝到被管理节点后,一切正常
https://note.youdao.com/yws/res/1305/FD6BFC16E6AF41D89357CD21CA10B72C
2、管理节点配置
2.1、查看ansilbe有哪些模块
#ansible-doc -l
https://note.youdao.com/yws/res/1290/E63DCFD4DBCA44F29053122E3201526E
https://note.youdao.com/yws/res/1296/6576FAFD700549C6B91B16CFD3725771
模块名称:command 作用:在远程节点上执行命令
2.2、定义主机和组
root@mysql02:~# cd /etc/ansible/
root@mysql02:/etc/ansible# vim hosts
https://note.youdao.com/yws/res/1306/E5874686BCF7419B8312CE6CD3587F29
目前只看hosts文件,其它先不用管。Hosts配置文件中的 ,这两行的作用是定义主机组,主机组名下可以写成员主机的IP(或域名),这是后可以把我需要管理的主机IP放到或主机组下。目前,我这里的被管理节点有两台,都在主机组里,IP是192.168.1.135和192.168.1.128
3、运维场景1(在被管理节点上执行相关的shell命令)
3.1、小栗子,截取IP地址
shell_cmd=`ifconfig |grep 'inet 地址'|grep '192.168.1' | grep -v 'grep' | awk '{print $2}'| tr -d "地址:"`
root@mysql02:/etc/ansible# ansible webservers -m command -a 'echo $shell_cmd'
https://note.youdao.com/yws/res/1307/6E8F66BF4509409E91AFC1E5AFC926BD
功能解析:将截取IP地址的命令赋值给shell_cmd变量,然后通过ansible执行'echo $shell_cmd'命令打印出截取到的IP地址。
参数说明:
其中webservers是主机组名称,在该主机组名称下的所有主机都会运行uptime命令,-m后是模块名称,-a 后是模块参数。
4、运维场景2(在管理节点上执行shell脚本,脚本在被管理节点上)
小栗子:
在被管理节点上的/root/目录中有osd.sh脚本,内容如下:
https://note.youdao.com/yws/res/1310/E4BC1EAF4CE34EE4933E9A9C3BF17CAF
root@mysql02:~# ansible webservers -m shell -a '/root/osd.sh'
https://note.youdao.com/yws/res/1308/47F36A682B4D4C2ABC9631EA5881FEF3
5、运维场景3(脚本在主控端(管理节点),但需要在客户机上执行,可以用script模块)
脚本动作如下:
1、在tmp目录下创建一个文件夹
2、在新创建的文件下创建一个txt文件
https://note.youdao.com/yws/res/1309/6D5CED5ED0224BFEA77BAE979B82B320
5.1、开始在ansible管理节点上运行
root@mysql02:~# ansible webservers -m script -a '/root/test.sh'
https://note.youdao.com/yws/res/1297/47D81CA532694212A5AEBF160F9B73B0
5.2、在被管理节点上验证
https://note.youdao.com/yws/res/1298/A550BC3F64F64ACE829D16762D3CFE15
结果:已成功完成任务
6、运维场景4(文件发布或称文件下发)
场景描述:在我的管理节点中的root目录里存在一个zabbix_3.0.4.orig.tar.gz文件,这个文件需要批量下发给被管理节点。
6.1、ansible管理节点上开始执行
root@mysql02:~# ansible webservers -m copy -a 'dest=/tmp src=/root/zabbix_3.0.4.orig.tar.gz'
https://note.youdao.com/yws/res/1291/1EBAA22294A74D4693AC21A04754DFB5
6.2、验证被管理节点
https://note.youdao.com/yws/res/1293/E77A57DB2249412388559A24F4D47A12
结果:文件下发成功
7、运维场景5(需要在被管理节点上安装软件,如通过:apt-get或yum)
场景描述:需要在被管理节点上安装ipython
root@mysql02:~# ansible webservers -m raw -a 'apt-get -y install ipython'
https://note.youdao.com/yws/res/1295/DAC029462A9B483C9A1BA9F7B25FCBDA
7.1、ipython是否安装成功?验证一下
没安装之前
https://note.youdao.com/yws/res/1302/AE4EE350568B4913A90A9FBDDA0EDCFD
https://note.youdao.com/yws/res/1294/E2074462552C44E88F2F14EE3D8594F7
8、运维场景6(在被管理节点中,重启或停止或启动某个服务)
root@mysql02:~# ansible webservers -m service -a "name=zabbix-agent state=restarted"
场景描述:我这里需要重启zabbix-agent服务
https://note.youdao.com/yws/res/1301/ED544CAB34354A24B47DBB0052CBF9D9
页:
[1]