模块文件
ping 模块 相对简单,没有参数
ansible 192.168.56.200 -m ping

command 模块
ansible websrvs -m command -a 'chdir=/etc/ cat centos-release'
使用command时不支持*管道的使用$也不支持

shell 模块
ansible websrvs -m shell -a "echo 123456 | passwd --stdin yunlong"
ansible websrvs -m shell -a 'echo $HOSTNAME' #注意此处为单引号
[root@ansible ~]#ansible websrvs -m shell -a "chdir=/data echo welcome to china > haha.log; cat haha.log"
192.168.56.200 | CHANGED | rc=0 >>
welcome to china

ansible websrvs -m shell -a "sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config; cat /etc/selinux/config"

ansible websrvs -m shell -a 'rm -rf /data/*' #删除目录下所有文件
scripts模块
实现将本机的脚本在被控端执行
如在本机新建一个脚本vim /data/hello.sh,内容为hostname
chmod +x /data/hello.sh
ansible websrvs -m script -a '/data/hello.sh'

copy 模块:从主控端复制文件到远程主机
如在远程主机新建一个yum源然后再删除该yum源
ansible websrvs -m copy -a 'content="[test]\nbaseurl=file:///misc/cd\ngpgcheck=0" dest=/etc/yum.repos.d/test.repo'
ansible websrvs -m shell -a 'rm /etc/yum.repos.d/test.repo'

fetch模块:从远程主机提取文件至主控端,于copy相反,目录可先tar
ansible websrvs -m shell -a 'tar jcvf /root/data.tar.bz2 /data/' #将被控端主机打包,注意j选项适用于bz2格式,J适用于xz格式,z适用于gz
ansible websrvs -m fetch -a 'src=/root/data.tar.bz2 dest=/data' #将被控端打包压缩好的文件提取至主控端/data下

file模块,设置文件属性(src为远程主机内的文件,path为被控端的文件)
ansible websrvs -m file -a 'path=/data/haha.log owner=yunlong mode=000'
设置软连接
ansible websrvs -m file -a 'src=/data/haha.log name=/data/haha.log.link state=link'
ansible websrvs -m shell -a 'ls -l /data' #查看生成的软连接
删除软连接
ansible websrvs -m file -a 'src=/data/haha.log name=/data/haha.log.link state=absent'
硬链接将state=hard即可
新建文件夹
ansible websrvs -m file -a 'path=/data/dir1 state=directory' #新建文件夹
ansible websrvs -m shell -a 'ls -l /data'查看新建文件夹
新建空文件
ansible websrvs -m file -a 'path=/data/dir1/hao.txt state=touch'
ansible websrvs -m shell -a 'ls -l /data/dir1/' #查看新建文件
删除文件或者文件夹
ansible websrvs -m file -a 'path=/data/dir1/hao.txt state=absent'

hostname模块
ansible websrvs -m hostname -a 'name=haha.localdomain' #修改主机名为haha.localdomain
ansible websrvs -m shell -a 'hostname' #查看修改是否生效,如果是centos6,相应的主机名存放路径/etc/sysconfig/network下也作了相应修改,centos7中主机名存放路径为/etc/hostname,建议主机名在相应的/etc/hosts下手动添加相应主机名

计划任务cron模块
时间同步在主控端centos7中
检查是否安装rpm -qi chrony
打开vim /etc/chrony.conf

Please consider joining the pool (http://www.pool.ntp.org/join.html).

server 172.22.0.1 iburst    #第一步设置本地服务器为主控端同步服务器
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst

# Allow NTP client access from local network.
allow 192.168.56.0/24    #第二步在主控端设置允许哪些机器同步自己

# Serve time even if not synchronized to a time source.
local stratum 10   #第三步即使第一步中同步失败,自身也可作为时间同步对第二部中的机器提供时间同步服务
 systemctl status chronyd      #第四步修改完后查看chronyd 服务状态
 systemctl start chronyd       #第四步修改完后启动chronyd 服务
 systemctl enable chronyd    #第四步修改完后设置chronyd 服务为开机启动
 systemctl restart chronyd    #修改配置文件后重启
     ss -ntlu                              #启动成功后查看端口号为323 ,123
在被控端(也是192.168.56.0网段)输入如在centos6中ntpdate 主控端IP地址 即可同步

回忆在本机设置计划任务crontab -e   回车即可进入编辑
 ansible websrvs -m cron -a 'name=synctime minute=*/5 job="/usr/sbin/ntpdate 主控端IP &> /dev/null"'     #创建计划任务name为计划任务名称,minute为每5分钟同步,job为计划任务执行内容
 ansible websrvs -m shell -a 'crontab -l'    #列出计划任务列表
 ansible websrvs -m cron -a 'name=synctime minute=*/5 job="/usr/sbin/ntpdate 主控端IP &> /dev/null" disabled=true'     #禁用计划任务
 ansible websrvs -m cron -a 'name=synctime minute=*/5 job="/usr/sbin/ntpdate 主控端IP &> /dev/null" disabled=false'     #启用计划任务

 ansible websrvss -m cron -a 'name=synctime minute=*/5 job="/usr/sbin/ntpdate 主控端IP &> /dev/null" state=absent'    #删除计划任务
yum包管理模块
 注意需要提前在被控端进行yum源配置,保证能在本机通过yum源安装
 ansible websrvs -m yum -a 'name=httpd'    #指定安装包名称,默认安装,通过ansible-doc yum查看使用帮助
 ansible websrvs -m yum -a 'rpm -qi httpd'    #查询安装情况
在本端通过rpm -qi 安装包,查询安装情况

 ansible websrvs -m yum -a 'name=httpd state=absent'    #卸载httpd服务
 ansible websrvs -m yum -a 'name=bind'   #安装bindDNS服务
 ansible websrvs -a 'ss -ntlu |grep 53'     #安装后查看是否有了53端口下面重启服务才会有

 service模块
     ansible websrvs -m service -a 'name=named state=started enabled=true'    #bind服务名为named,开机启动
 ansible websrvs -a 'ss -ntlu | grep 53'    #此时端口53出现了
 ansible websrvs -m service -a 'name=named state=stopped'    #停止服务,端口号就没了

ansible websrvs -a 'service named status' #查看此时服务已关闭,设置了默认模块为shell
ansible常用模块的用法