ansible常用模块实例

Posted sxshaolong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible常用模块实例相关的知识,希望对你有一定的参考价值。

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文件

技术图片

 

以上是关于ansible常用模块实例的主要内容,如果未能解决你的问题,请参考以下文章

Ansible 学习总结—— Ansible 常用模块与 playbook 实例讲解

实例学习ansible系列常用模块之user/group

Ansible命令应用之常用模块(持续更新中)

ansible使用笔记(二)常用命令使用及常用模块简介

Ansible概述及常用命令模块

Ansible概述及常用命令模块