ansible批量管理服务 上 (3)

参数演示
chdir:在运行命令之前,先切换指定目录(远程主机)

[root@m01 ~]#ansible 172.16.1.41 -m command -a "pwd" 172.16.1.41 | CHANGED | rc=0 >> /root [root@m01 ~]#ansible 172.16.1.41 -m command -a "chdir=http://www.likecs.com/tmp pwd" 172.16.1.41 | CHANGED | rc=0 >> /tmp

creates:在执行命令前,判断远程主机指定文件是否存在,如果存在,命令不执行

[root@m01 ansible]# ansible 172.16.1.41 -m command -a "creates=http://www.likecs.com/etc/rsyncd.conf touch /etc/rsyncd.conf" 172.16.1.41 | SUCCESS | rc=0 >> skipped, since /etc/rsyncd.conf exists # 文件已存在,不会执行后续命令 [root@m01 ~]#ansible 172.16.1.41 -m command -a "creates=http://www.likecs.com/tmp/test.txt touch /tmp/test.txt" [WARNING]: Consider using the file module with state=touch rather than running 'touch'. If you need to use command because file is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message. 172.16.1.41 | CHANGED | rc=0 >> # 文件没有,执行后续命令创建文件 [root@backup tmp]#ll total 2 -rw-r--r-- 1 root root 0 Jul 24 09:52 test.txt

3.2 shell模块(万能模块 )

shell – Execute shell commands on targets:在远程目录主机执行命令
Parameters:模块的参数 和command参数一样

chdir 在运行命令之前,先切换指定目录(远程主机)
creates   在执行命令前,判断远程主机指定文件是否存在,如果存在,命令不执行    
removes   在执行命令前,判断远程主机指定文件是否存在,如果存在,命令继续执行    
free_form   在使用这个模块是, -a后面必须输入一个合法linux命令    

参数演示
shell识别 > 

[root@m01 ~]#ansible 172.16.1.41 -m shell -a "echo 123456 >/tmp/test.txt" 172.16.1.41 | CHANGED | rc=0 >> [root@backup tmp]#cat test.txt 123456

3.3 script模块(脚本模块)

Runs a local script on a remote node after transferring it:远程批量执行本地脚本信息
shell模块远程执行脚本
第一步:编写一个脚本

[root@m01 scripts]#vim yum.sh #!/bin/bash yum install -y htop

第二步:远程传输脚本

[root@m01 scripts]#ansible 172.16.1.41 -m copy -a "src=http://www.likecs.com/server/scripts/yum.sh dest=http://www.likecs.com/server/scripts"

第三步:批量执行脚本文件

[root@m01 scripts]#ansible 172.16.1.41 -m shell -a "sh /server/scripts/yum.sh"

script 远程执行脚本
第一步:编写脚本

[root@m01 scripts]#vim yum.sh #!/bin/bash yum install -y htop

第二步:远程执行脚本

[root@m01 scripts]#ansible 172.16.1.41 -m script -a "/server/scripts/yum.sh" # scripy模块可以省略sh

相比shell模块来讲,script不用将脚本传输到远程主机,脚本本身不用进行授权,即可利用script模块执行,不需要使用sh,更加简洁,高效。

3.4 copy模块 把本地文件推送到远程主机

copy:可以将本地数据批量拷贝到远程主机,可以将远程主机数据进行移动操作(并不是拉取)

src  指定本地要推送的源数据信息
dest   指定保存数据目录路径信息    
mode   数据推送后修改数据权限    
owner   修改数据推送后的所属用户信息    
group   修改数据推送后的所属组信息    
remote_src   指定源为远程主机路径信息    
backup   将数据进行备份    
content   在指定远程主机生成有数据的文件,指定文件内容    
directory_mode   递归设定目录的权限,默认为系统默认权限    
forces   如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖。
如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes。
   
others   所有的file模块里的选项都可以在这里使用    

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxfyf.html