文章目录
前言
本文内容承接上文:https://blog.csdn.net/weixin_51486343/article/details/115393094?spm=1001.2014.3001.5501
环境:
主机名 | IP地址 | 软件服务 | 操作系统 |
---|---|---|---|
ansible | 192.168.126.11 | ansible | CentOS7 |
webserver | 192.168.126.12 | / | CentOS7 |
mysql | 192.168.126.13 | / | CentOS7 |
ansible 内置了丰富的模块供用户使用,但是经常使用到的模块却不多,本文记录了比较常用的模块,以供大家一起学习
Ⅰ:command - 默认模块
适合使用简单的命令,无法支持"<",">","|",";","&"等符号
命令格式:
ansible [主机] [-m 模块] [-a args]
例:
ansible-doc -l '//列出所有已安装的模块(按q退出)'
ansible-doc -s yum '//-s列出yum模块描述信息和操作动作(按q退出)'
[root@ansible ~]# ansible 192.168.126.12 -m command -a 'date' '//指定ip执行date命令,这里上文已做过免交互'
192.168.126.12 | CHANGED | rc=0 >>
2021年 04月 02日 星期五 10:53:51 CST
[root@ansible ~]# ansible webserver -m command -a 'date' '//主机名与ip地址同理'
192.168.126.12 | CHANGED | rc=0 >>
2021年 04月 02日 星期五 10:54:43 CST
[root@ansible ~]# ansible mysql -m command -a 'date'
192.168.126.13 | CHANGED | rc=0 >>
2021年 04月 02日 星期五 10:55:31 CST
[root@ansible ~]# ansible all -m command -a 'date' '//所有hosts主机执行date命令'
192.168.126.13 | CHANGED | rc=0 >>
2021年 04月 02日 星期五 10:55:59 CST
192.168.126.12 | CHANGED | rc=0 >>
2021年 04月 02日 星期五 10:55:59 CST
[root@ansible ~]# ansible all -a 'ls /' '//若不加-m模块,则默认运行command模块'
192.168.126.13 | CHANGED | rc=0 >>
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
192.168.126.12 | CHANGED | rc=0 >>
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
Ⅱ:cron - 定时任务模块
有两种状态(state):present表示添加,absent表示移除
例:
ansible-doc -s cron '//-s查看cron模块信息'
[root@mysqlr .ssh]# which echo '//在PATH变量指定的路径中搜索echo命令的位置'
/usr/bin/echo
[root@ansible ~]# ansible mysql -m cron -a 'minute="*/1" job="/usr/bin/echo hello" name="xcf cron job"'
'//指定webserver主机,-m不可省略,否则默认执行command模块'
'//-a指定参数,每分钟执行(间隔频率);执行操作;指定计划性任务名称'
'//这里注意格式,单引号与双引号的使用'
192.168.126.13 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"envs": [],
"jobs": [
"xcf cron job"
]
}
[root@ansible ~]# ansible mysql -a 'crontab -l' '//执行命令查看以下有无该计划性任务'
192.168.126.13 | CHANGED | rc=0 >>
#Ansible: xcf cron job
*/1 * * * * /usr/bin/echo hello
[root@mysql .ssh]# crontab -l '//切换至mysql查看以下'
#Ansible: xcf cron job
*/1 * * * * /usr/bin/echo hello
您在 /var/spool/mail/root 中有新邮件
[root@mysql .ssh]# cat /var/spool/mail/root '//信息写在该邮件内,可以去查看以下,一分钟执行一次该命令'
[root@ansible ~]# ansible mysql -m cron -a 'name="xcf cron job" state=absent'
'//移除计划性任务'
192.168.126.13 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"envs": [],
"jobs": []
}
'//再切换至mysql查看,原先的计划性任务没了'
[root@mysql .ssh]# crontab -l
您在 /var/spool/mail/root 中有新邮件
Ⅲ:user - 用户模块
'该模块请求的是useradd,userdel,usermod三个指令'
'即创建/删除用户,设定用户所属组'
例:
ansible-doc -s user '//-s查看user模块信息'
[root@ansible ~]# ansible mysql -m user -a 'name="test01"' '//在mysql主机中创建用户test01'
192.168.126.13 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"comment": "",
"create_home": true,
"group": 1001,
"home": "/home/test01",
"name": "test01",
"shell": "/bin/bash",
"state": "present",
"system": false,
"uid": 1001