参数演示
chdir:在运行命令之前,先切换指定目录(远程主机)
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参数一样
creates 在执行命令前,判断远程主机指定文件是否存在,如果存在,命令不执行
removes 在执行命令前,判断远程主机指定文件是否存在,如果存在,命令继续执行
free_form 在使用这个模块是, -a后面必须输入一个合法linux命令
参数演示
shell识别 >
Runs a local script on a remote node after transferring it:远程批量执行本地脚本信息
shell模块远程执行脚本
第一步:编写一个脚本
第二步:远程传输脚本
[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]#ansible 172.16.1.41 -m script -a "/server/scripts/yum.sh" # scripy模块可以省略sh相比shell模块来讲,script不用将脚本传输到远程主机,脚本本身不用进行授权,即可利用script模块执行,不需要使用sh,更加简洁,高效。
copy:可以将本地数据批量拷贝到远程主机,可以将远程主机数据进行移动操作(并不是拉取)
src 指定本地要推送的源数据信息dest 指定保存数据目录路径信息
mode 数据推送后修改数据权限
owner 修改数据推送后的所属用户信息
group 修改数据推送后的所属组信息
remote_src 指定源为远程主机路径信息
backup 将数据进行备份
content 在指定远程主机生成有数据的文件,指定文件内容
directory_mode 递归设定目录的权限,默认为系统默认权限
forces 如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖。
如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes。
others 所有的file模块里的选项都可以在这里使用