ansible查看帮助方法
ansible-doc copy:查询指定某个模块参数用法信息
ansible-doc -l:查看所有模块说明信息
官网查询帮助:https://docs.ansible.com/
注:参数上带required表示这个参数必须要有
调试,打印出所有任务:ansible-playbook 剧本名 --list-tasks
从指定任务执行:ansible-playbook 剧本名 --start-at-task=mkdir
1、command(命令模块)----默认模块,可以省略
[root@m01 ~]# ansible oldboy -m command -a 'hostname'
172.16.1.31 | CHANGED | rc=0 >>
nfs01
172.16.1.7 | CHANGED | rc=0 >>
web01
172.16.1.41 | CHANGED | rc=0 >>
backup
2、shell(命令模块):支持特殊符号、支持脚本
\\\批量更新backup、web01、nfs01三台主机的时间
[root@m01 ~]# ansible all -m shell -a 'ntpdate ntp1.aliyun.com'
172.16.1.41 | CHANGED | rc=0 >>
28 May 20:29:20 ntpdate[10115]: step time server 120.25.115.20 offset 2.786290 sec
172.16.1.31 | CHANGED | rc=0 >>
28 May 20:29:20 ntpdate[9550]: step time server 120.25.115.20 offset 2.787557 sec
172.16.1.7 | CHANGED | rc=0 >>
28 May 20:29:21 ntpdate[9685]: step time server 120.25.115.20 offset 2.787166 sec
[root@m01 ~]#
\\\检查backup、web01、nfs01三台主机的时间
[root@m01 ~]# ansible all -m shell -a 'date'
172.16.1.31 | CHANGED | rc=0 >>
Tue May 28 20:30:38 CST 2019
172.16.1.7 | CHANGED | rc=0 >>
Tue May 28 20:30:38 CST 2019
172.16.1.41 | CHANGED | rc=0 >>
Tue May 28 20:30:38 CST 2019
[root@m01 ~]#
3、copy(复制模块)
参数:
src:源,文件从哪里来
dest:目标,复制到远程哪里去
owner:所有者
group:用户组
mode:权限
backup:是否备份,对远端已有的数据
content:向被批量推送的文件中添加内容,与src冲突,只能二选一
\\将管理机/etc/hostname推送到backup、web01、nfs01三台主机的/tmp/下
[root@m01 ~]# ansible all -m copy -a 'src=/etc/hostname dest=/tmp/hostname'
\\检查是否成功
[root@m01 ~]# ansible all -m shell -a 'cat /tmp/hostname'
172.16.1.41 | CHANGED | rc=0 >>
m01
172.16.1.7 | CHANGED | rc=0 >>
m01
172.16.1.31 | CHANGED | rc=0 >>
m01
[root@m01 ~]#
4、scripts(脚本模块):先把脚本传输到服务器,然后执行
[root@m01 ~]# #ansible all -m script -a "/server/scripts/yum.sh"
[root@m01 ~]# ansible all -a 'rpm -qa ipvsadm'
[WARNING]: Consider using the yum, dnf or zypper module rather than running 'rpm'. If you need to use command because
yum, dnf or zypper 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. \\就是告诉你安装命令yum也可以支持
172.16.1.41 | CHANGED | rc=0 >>
ipvsadm-1.27-7.el7.x86_64
172.16.1.7 | CHANGED | rc=0 >>
ipvsadm-1.27-7.el7.x86_64
5、yum(软件安装模块)
参数
name:指定要安装的软件包名称
state:指定使用yum的方法
present:安装
absent:关闭或删除
latest:更新
\\\批量更新backup、web01、nfs01这三台机器的tree命令
[root@m01 ~]# ansible all -m yum -a "name=tree state=latest"
6、file(文件配置模块):相当于touch、mkdir、ln、rm,不支持通配符
参数:
path:指定路径或文件名**
state:指定文件创建的类型
directory:在远端创建目录
touch:在远端创建文件**
link:link或hard表示创建链接文件
absent:删除文件或目录
mode:设置文件或目录权限
owner:设置文件或目录属主信息
group:设置文件或目录属组信息
\\\批量创建目录
[root@m01 ~]# ansible all -m file -a 'path=/tmp/a state=directory mode=555 owner=root group=root '
\\\批量创建文件
[root@m01 ~]# ansible all -m file -a "path=/data/a/b/c/oldboy.txt state=touch"
7、serivce(服务模块):关闭、开启、重启
参数
name:指定要启动服务的名称
state:指定服务启动状态
started:启动服务
stopped:停止服务
restarted:重启服务
reloaded:重载服务
enabled:开机自启(yes或no)
ansible all -m service -a 'name=crond state=started enabled=yes'
8、group(组模块)
name:指定创建的组名
gid:指定组的gid
state
absent:移除远端主机的组
present:创建远端主机的组(默认)
\\\创建oldgirl的用户组
[root@m01 ~]# ansible all -m group -a 'name=oldgirl gid=888'
9、user(用户模块)
参数
name
uid
group
shell:指定命令解释器
create_home:是否创建家目录
\\\创建用户oldgirl指定uid和gid 888,不创建家目录也不允许登陆
ansible all -m user -a 'name=oldgirl uid=888 group=oldgirl shell=/sbin/nologin create_home=no '
\\\检查
[root@m01 ~]# ansible all -m shell -a 'grep "oldgirl" /etc/passwd'
172.16.1.41 | CHANGED | rc=0 >>
oldgirl:x:888:888::/home/oldgirl:/sbin/nologin
172.16.1.31 | CHANGED | rc=0 >>
oldgirl:x:888:888::/home/oldgirl:/sbin/nologin
172.16.1.7 | CHANGED | rc=0 >>
oldgirl:x:888:888::/home/oldgirl:/sbin/nologin
[root@m01 ~]#
10、cron(定时任务模块)
参数:
name:指定定时任务的注释
minute:分钟(0-59,,/2)
month:月份(1-12,,/2)
job:指定定时任务的命令或脚本
hour:小时(0-23,,/2)
day:天(0-31,,/2)
weekday:分钟(0-6,*)
state:
present:添加定时任务
absent:删除定时任务
#在backup和nfs01机器中添加一个定时任务每5分钟同步系统时间
\\正常定时任务格式:
*/5 * * * * /sbin/ntpdate ntp1.aliyun.com>/dev/null 2>&1
\\ansible定时任务模块格式:
ansible oldboy -m cron -a 'name="sync time" minute="*/5" job="/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1" state=present'
11、mount(挂载模块)
注:测试这个挂载模块之前,一定要先在nfs01上配置好nfs
参数:
fstype:文件系统类型
src:source 源
path:挂载点
opts:挂载参数,defaults(默认)
state:状态(临时、永久)
present:开机挂载,仅将挂载设备写入/etc/fstab
mounted:挂载设备,并将配置写入/etc/fstab
unmounted:卸载设备,不会清除/etc/fstab写入的配置
absent:卸载设备,会清除/etc/fstab写入的配置
#将nfs01机器上的共享目录/nfs挂载到web01机器上的/upload
\\正常mount挂载命令:
mount -t nfs 172.16.1.31:/data /web01
\\ansible中mount模块命令
ansible 172.16.1.7 -m mount -a 'src=172.16.1.31:/nfs path=/upload fstype=nfs state=mounted'
12、archive(打包压缩模块)
参数:
path:要打包的文件或目录(绝对路径)
dest:打包到哪里
- name: tar /etc
archive:
path: /etc
dest: "{{ dirs }}/{{ ipaddr.stdout }}/etc-{{ time.stdout }}.tar.gz"
后续遇到在补充……