#批量拷贝文件
ansible abcde -u ubuntu -m copy -a 'src=/var/tmp/reconfig.sh dest=/var/tmp/'
ansible abcde -m copy -a 'src=/var/tmp/zabbix_discovery_http.py dest=/data/scripts/ owner=zabbix group=zabbix mode=0755' -i /var/tmp/hosts
ansible abcde -m copy -a 'src=/var/tmp/zabbix_discovery_http.conf dest=/data/server/zabbix/etc/zabbix_agentd.conf.d/ owner=zabbix group=zabbix mode=0644' -i /var/tmp/hosts
#批量查看主机名
ansible abcde -m shell -a 'echo $HOSTNAME'
#批量检查主机是否存活
ansible abcde -m ping -i /var/tmp/hosts
#ansible与sed的结合
ansible abcde -m shell -a "sed -i 's/route add -net 10.23.0.0 netmask 255.255.0.0 gateway 10.29.173.15/ /g' /etc/rc.local" -i /var/tmp/hosts
#批量添加计划任务
ansible abcde -m ping -i /var/tmp/hosts #查看ping
ansible abcde -m copy -a 'src=/var/tmp/division.sh dest=/data/scripts/' -i /var/tmp/hosts #拷贝
ansible abcde -m shell -a 'ls -al /data/scripts/|grep division.sh' -i /var/tmp/hosts #检查拷贝是否成功
ansible abcde -m cron -a 'name="clear app logs" minute='0' hour='3' job="/bin/sh /data/scripts/division.sh &>/dev/null"' -i /var/tmp/hosts #添加任务
ansible abcde -m shell -a 'crontab -l|tail -2' -i /var/tmp/hosts #检查任务是否添加成功
最终效果如下:
#Ansible: clear app logs
0 3 * * * /bin/bash /data/scripts/division.sh
ansible abcde -m shell -a "echo '00 * * * * /bin/bash /data/scripts/pop-webapp_log_division.sh' >> /var/spool/cron/www" -i /var/tmp/hosts #www用户下添加计划任务
#批量删除计划任务
ansible abcde -m cron -a 'name="clear app logs" state=absent' -i /var/tmp/hosts #present 启用 absent 停用
#批量创建目录
ansible abcde -m file -a 'path=/data/backup/center state=directory owner=www group=www recurse=yes' -i /var/tmp/hosts
recurse:递归设置文件的属性,只对目录有效
#批量解压文件
ansible abcde -m unarchive -a 'src=/data/app/pinpoint-agent.20180802.tar.gz dest=/data/app/ copy=no mode=0755' -i /var/tmp/hosts #该命令压缩包已在目标机上
unarchive模块:解压缩
copy:默认为yes,当copy=yes,那么拷贝的文件是从ansible主机复制到远程主机上的,如果设置为copy=no,那么会在远程主机上寻找src源文件
src:源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no
dest:远程主机上的目标路径
mode:设置解压缩后的文件权限
#批量判断主机名与zabbix-agent配置文件的主机名是否一致
ansible abcde -m shell -a 'grep `hostname` /data/server/zabbix/etc/zabbix_agentd.conf' -i /var/tmp/hosts
SSH端口变更后,HOSTS文件写法如下:
[root@txysitvldevops03 tmp]# more hosts
[abcde]
10.124.11.104 ansible_ssh_port=33897