Command模块:
Command:在远程主机执行命令,默认模块可忽略-m。
Command:模块不支持变量,管道符,&,$,echo >等需要使用shell模块。
ansible all -m command -a 'systemctl restart network'
重启主机清单的所有主机的网络(以上是完整的写法)。
可以省略-m,因为它时默认的模块。
ansible all -a 'systemctl restart network'
ansible web -a 'ls -l /tmp' (查看web组tmp目录下面有哪些文件)
ansible all -a 'mkdir -p /data' (所有主机创建/data目录)
ansible all -a 'df -hT' (查看所有主机的磁盘使用率)
查看命令的帮助:ansible-doc command 详细参数
ansible all -a 'removes=/data/test.txt rm -rf /data/test.txt'
removes:如果这个文件不存在则不执行,文件存在则执行
ansible all -a 'ls -l /data/' (首先查看目录为空)
Ansible all -a 'creates=/data/aa.txt touch /data/aa.txt'
creates:如果存在反而不执行,如果不存在反而执行
ansible all -a 'chdir=/data ls -l'
chdir:切换至某个文件夹下
shell模块:
shell和command相似,用于执行shell命令。
Shell不是默认的模块所以要加-m
ansible all -m shell -a 'echo $HOSTNAME'
使用shell模块输出所有主机的名字。
ansible all -a 'useradd test1' (所有的主机创建一个test1的用户)
ansible all -m shell -a 'cat /etc/passwd | grep test1'
使用管道符查看是否创建成功。
nsible all -m shell -a 'echo 123.com!|passwd --stdin test1'
为所有主机的test1用户生成密码口令。
删除某个文件但是后缀时日期的有很多需要*号匹配
ansible all -m shell -a 'rm -rf /tmp/aa.txt.*'
Script:运行脚本模块(ansible-doc script:帮助)
只需要在ansible端将脚本编写好,就可以在所有的主机上面执行。
例子:在/tmp目录下面写一个简单的脚本。
ansible all -m script -a '/tmp/hostname.sh'
Copy模块:
将ansible端/tmp目录下的hostname.sh复制到所有主机的/tmp目录下面。
ansible all -m copy -a 'src=/tmp/hostname.sh dest=/tmp/hostname.sh'
src:源路径
dest:目标路径
ansible all -a 'ls -l /tmp' (查看是否都已经复制到所有主机的/tmp目录下面)
将ansible端的aa.txt拷贝到所有的主机,如果其他主机存在aa.txt文件,执行这条命令后将会备份原有的,将新的这个aa.txt拷贝到指定的路径下。
ansible all -m copy -a 'src=/tmp/aa.txt dest=/tmp/aa.txt backup=yes'
ansible all -a 'ls -l /tmp/' (查看是否备份及复制)
删除备份的文件
ansible all -m shell -a 'rm -rf /tmp/aa.txt.*'
将文件拷贝到所有的主机,并设置权限及所有者。
ansible all -m copy -a 'src=/tmp/hostname.sh dest=/tmp/hostname.sh mode=000 owner=test1'
有原始文件的话还是要加上backup=yes,做一个备份。
查看权限
Content:输出内容到文件
ansible all -m copy -a 'content="welcome to beijing" dest=/tmp/welcome.txt'
查看是否输出到目标主机的welcome.txt文件
来源:https://www.cnblogs.com/sxshaolong/p/12293017.html