自动化运维工具-Ansible
自动化运维是这几年很热的话题,而且在招聘上都有这方面的要求。做为运维人员还是需要掌握的一个工具。
Ansible
网上资源:https://blog.51cto.com/13525470/2104916 //个人感觉梳理很清晰,很容易入手。
关于书籍大家也可以看一下: 《Ansible自动化运维技术与最佳实践.pdf》电子版网上很容易入手。 本书第四章 playbook详解 重点看一下,在加上上面提到的网上资源,基本可以应对日常运维应用。
《Ansible权威指南》 这个也不错。看书才是王道,是人家帮忙梳理完整的知识脉络。
1、下面是通过playbook写了个测试zlib的安装。
--- - hosts : 192.168.161.235 vars : rmpath : '/opt/openssh' lopath : '/opt/openssh_bak' tasks : - name : copy file copy : src={{ rmpath }}/zlib-1.2.11.tar.gz dest={{ lopath }} - name : tar file #shell : tar -zxf {{ lopath }}/zlib-1.2.11.tar.gz -C {{ lopath }} unarchive : src={{ lopath }}/zlib-1.2.11.tar.gz dest={{ lopath }} - name : config shell : cd {{ lopath }}/zlib-1.2.11 && ./configure --prefix=/usr/local/zlib-1.2.11-1 && make && make install
2、远程查看服务器磁盘使用情况
--- - hosts : 192.168.161.235 vars : mrice : mrice tasks : - name : command command : date register : rdate - name : show command result debug : msg="show command result {{ rdate.stdout }}" - name : df command : df -h register : rdf - name : show df result debug : var=rdf.stdout verbosity=0 - name : df result file shell : echo -e "host:{{ inventory_hostname }}\ndate:{{ rdate.stdout}}\n{{ rdf.stdout }}" > /opt/mrice_command
将结果导出到一个文件中,生产中可以将结果放在共享磁盘上。:
[root@centos-01 mrice_ansible]# more /opt/mrice_command host:192.168.161.235 date:Thu Sep 5 10:27:13 CST 2019 Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 17G 2.1G 15G 13% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 140K 489M 1% /dev/shm tmpfs 489M 50M 439M 11% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 1014M 125M 890M 13% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sr0 4.3G 4.3G 0 100% /media 192.168.161.235:/opt/nfs 17G 2.1G 15G 13% /home/w_nfs
个人目前阶段感觉,可以将之前写好的shell脚本融入到ansible playbook中,完成批量操作。平时临时执行操作,Ansilbe还是挺方便的.后期有新的任务时,可转换playbook完成。Ansible每个步骤都会留下痕迹,明确的显示每一步都做了什么,而且有很多逻辑判断都已封装好了,不像shell需要写上判断。
实际使用中遇到的问题:
非ROOT用户远程连接后使用root执行命令:
ansible -h可以看到有
--become (-b)
--become-method
--become-user
--ask-become-pass (-K)大写K
四个参数,利用这四个参数可以在ansible命令和playbook中用普通用户执行root操作。
[xguang@centos-01 ~]$ ansible 192.168.161.234 -m shell -a 'date' -k -b --become-method su --become-user root -K
/etc/ansible/hosts中增加
[xguang]
192.168.161.234 ansible_become_pass=Aa!@3306 //root 密码
[xguang@centos-01 ~]$ ansible 192.168.161.234 -m shell -a 'date' -k -b --become-method su --become-user root
SSH password:
192.168.161.234 | SUCCESS | rc=0 >>
Thu Aug 15 11:17:04 CST 2019