1. ansible命令和脚本类型模块介绍与实践
1.1 command模块功能说明
功能说明:在远程节点上执行一个命令(用于执行一个命令)。
command模块功能参数管理实践:利用command模块实现批量管理。
示例1:获取所有机器的负载信息。
[root@m01 ~]# ansible oldgirl -m command -a "uptime"
# 说明:command模块为基本命令模块,可以省略不用必须指定。
# -m指定使用的模块
# -a指定使用模块中相应的命令参数
192.168.9.7 | SUCCESS | rc=0 >>
11:07:50 up 1 day, 4:22, 2 users, load average: 0.00, 0.01, 0.05
192.168.9.9 | SUCCESS | rc=0 >>
11:00:34 up 1 day, 1:36, 2 users, load average: 0.00, 0.01, 0.05
# 提示:uptime可以换为任意的系统命令,注意不能带管道及重定向符号。
# 特殊:不支持的东西,如 > < | &等 $HOME,替代方案用shell模块
ansible oldboy -m shell -a "ps -ef | grep ssh"
ansible oldboy -m shell -a "echo oldboy > /tmp/a.log"
示例2:切换到/etc/目录。
切换到/etc/目录,然后输出当前目录。
[root@m01 ~]# ansible oldboy -m command -a "pwd chdir=/etc"
192.168.9.5 | SUCCESS | rc=0 >>
/etc
192.168.9.6 | SUCCESS | rc=0 >>
/etc
[root@m01 ~]# ansible oldboy -m command -a "pwd"
192.168.9.6 | SUCCESS | rc=0 >>
/root
192.168.9.5 | SUCCESS | rc=0 >>
/root
提示:command的参数chdir=/etc配置相当于cd /etc。
示例3:command的参数creates实践。
参数:pwd creates=/etc相当于Shell的条件测试 [ -e /etc ] || pwd,即存在/etc目录就不执行对应的命令操作,如果不存在就执行相应命令操作,和下面的removes相反。
[root@m01 ~]# ansible oldboy -m command -a "pwd creates=/oldgirl"
---如果不存在/oldgirl目录或文件,就执行pwd,反之不执行。
192.168.9.6 | SUCCESS | rc=0 >> ---因为/oldgirl不存在,所以执行了pwd,打印了/root目录
/root
192.168.9.5 | SUCCESS | rc=0 >>
/root
[root@m01 ~]# ansible oldboy -m command -a "pwd creates=/etc"
192.168.9.5 | SUCCESS | rc=0 >> ---因为/etc存在,所以没有执行pwd,无正确输出,只提示/etc/存在。
skipped, since /etc exists
192.168.9.6 | SUCCESS | rc=0 >>
skipped, since /etc exists
示例4:command的参数removes实践。
参数:ls /opt removes=/opt相当于条件测试[ -e /opt ] && ls /opt,即存在/opt目录就执行对应的命令操作,如果不存在就不执行相应的命令操作,和前文的creates参数作用相反。
[root@m01 ~]# ansible oldboy -m command -a "ls /opt removes=/opt"
192.168.9.6 | SUCCESS | rc=0 >>
a
b
c
d
etc
hosts
192.168.9.5 | SUCCESS | rc=0 >>
null
[root@m01 ~]# ansible oldboy -m command -a "ls /old removes=/old"
192.168.9.5 | SUCCESS | rc=0 >>
skipped, since /old does not exist
192.168.9.6 | SUCCESS | rc=0 >>
skipped, since /old does not exist
示例5:command的参数warn实践。
参数:warn=False忽略警告的意思。
[root@m01 ~]# ansible oldboy -m command -a "chmod 000 /etc/hosts"
[WARNING]: Consider using file module with mode rather than running chmod ---警告信息
192.168.9.5 | SUCCESS | rc=0 >>
192.168.9.6 | SUCCESS | rc=0 >>
[root@m01 ~]# ansible oldboy -m command -a "chmod 000 /etc/hosts warn=False" ---忽略警告
192.168.9.6 | SUCCESS | rc=0 >>
192.168.9.5 | SUCCESS | rc=0 >>
1.2 shell模块功能说明
功能说明:在远程节点上执行命令(可以是多个命令)。
示例6:批量执行ps -ef | grep sshd | grep -v grep命令。
[root@m01 ~]# ansible oldboy -m shell -a "ps -ef | grep sshd | grep -v grep"
192.168.9.5 | SUCCESS | rc=0 >>
root 6738 1 0 2月29 ? 00:00:00 /usr/sbin/sshd -D
root 16241 6738 0 09:53 ? 00:00:00 sshd: root@pts/0
192.168.9.6 | SUCCESS | rc=0 >>
root 6791 1 0 3月11 ? 00:00:00 /usr/sbin/sshd -D
root 10454 6791 0 11:55 ? 00:00:00 sshd: root@pts/0
# command模块不支持管道等特殊操作
[root@m01 ~]# ansible oldboy -m command -a "ps -ef | grep sshd | grep -v grep"
192.168.9.5 | FAILED | rc=1 >> ---输出报错
error: garbage option
Usage:
ps [options]
Try 'ps --help <simple|list|output|threads|misc|all>'
or 'ps --help <s|l|o|t|m|a>'
for additional help text.
For more details see ps(1).non-zero return code
192.168.9.6 | FAILED | rc=1 >>
error: garbage option
Usage:
ps [options]
Try 'ps --help <simple|list|output|threads|misc|all>'
or 'ps --help <s|l|o|t|m|a>'
for additional help text.
For more details see ps(1).non-zero return code
示例7:批量执行远程脚本。
注意:脚本必须事先存在于本地节点,否则无法执行。
# 被管理节点Web01编写远程执行脚本。
[root@web01 ~]# echo pwd > /server/scripts/pwd.sh
[root@web01 ~]# cat /server/scripts/pwd.sh
pwd
[root@web01 ~]# chmod +x /server/scripts/pwd.sh
[root@m01 ~]# ansible oldgirl -m shell -a "/server/scripts/pwd.sh"
192.168.9.7 | SUCCESS | rc=0 >>
/root
192.168.9.9 | FAILED | rc=127 >>
/bin/sh: /server/scripts/pwd.sh: 没有那个文件或目录non-zero return code
说明:利用shell模块实现批量执行远程主机脚本时,脚本必须在远程主机上存在,并且授权为执行权限。
1.3 script模块功能说明
功能说明:把本地脚本传输到远程节点上并运行脚本。
和shell模块比,script模块更强大,本地有一份脚本就可以在所有机器上执行。
示例8:批量执行远程脚本。
# 管理节点m01编写脚本
[root@m01 ~]# echo -e "pwd\nhostname" >/server/scripts/pwd.sh
[root@m01 ~]# cat /server/scripts/pwd.sh
pwd
hostname
[root@m01 ~]# chmod +x /server/scripts/pwd.sh
# 批量运行脚本文件
[root@m01 ~]# ansible oldgirl -m script -a "/server/scripts/pwd.sh"
192.168.9.7 | SUCCESS => {
"changed": true,
"rc": 0,
"stderr": "Shared connection to 192.168.9.7 closed.\r\n",
"stdout": "/root\r\nweb01\r\n",
"stdout_lines": [
"/root",
"web01"
]
}
192.168.9.9 | SUCCESS => {
"changed": true,
"rc": 0,
"stderr": "Shared connection to 192.168.9.9 closed.\r\n",
"stdout": "/root\r\nweb02\r\n",
"stdout_lines": [
"/root",
"web02"
]
}
说明:利用script模块实现批量执行远程主机脚本时,脚本不用在远程主机上存在和授权。
2. Ansible文件类型模块介绍与实践
2.1 copy模块功能说明
功能说明:复制文件到远程主机。
copy模块功能参数1 copy模块功能参数2示例9:批量远程复制文件
批量远程复制并设置用户、用户组、权限属性。
# 执行批量复制文件到远程主机命令。
[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/passwd dest=/tmp/oldgirl.txt owner=oldboy group=oldboy mode=0755"
192.168.9.5 | SUCCESS => {
"changed": true,
"checksum": "f46e74616780e28c950837c16571665b058c3233",
"dest": "/tmp/oldgirl.txt",
"gid": 1000,
"group": "oldboy",
"md5sum": "388824fe0e2029fba5ef752f0e0fab2c",
"mode": "0755",
"owner": "oldboy",
"size": 798,
"src": "/root/.ansible/tmp/ansible-tmp-1584426871.96-177865870784265/source",
"state": "file",
"uid": 1000
}
192.168.9.6 | SUCCESS => {
"changed": true,
"checksum": "f46e74616780e28c950837c16571665b058c3233",
"dest": "/tmp/oldgirl.txt",
"gid": 1000,
"group": "oldboy",
"md5sum": "388824fe0e2029fba5ef752f0e0fab2c",
"mode": "0755",
"owner": "oldboy",
"size": 798,
"src": "/root/.ansible/tmp/ansible-tmp-1584426871.96-226674117663169/source",
"state": "file",
"uid": 1000
}
说明:copy模块为数据推送模块,可以将数据推送到远程节点主机中,并且可以对文件进行属性权限修改。
# 登录到远程主机上检查批量操作结果。
[root@m01 ~]# ansible oldboy -m command -a "ls -l /tmp/oldgirl.txt"
192.168.9.6 | SUCCESS | rc=0 >>
-rwxr-xr-x 1 oldboy oldboy 798 3月 12 15:10 /tmp/oldgirl.txt
192.168.9.5 | SUCCESS | rc=0 >>
-rwxr-xr-x 1 oldboy oldboy 798 3月 4 13:08 /tmp/oldgirl.txt
示例10:
远程批量复制文件前进行备份,并写入指定内容到文件。
# 执行批量复制文件到远程主机命令。
[root@m01 ~]# ansible oldboy -m copy -a "content='I am oldboy' dest=/tmp/oldgirl.txt backup=yes"
192.168.9.5 | SUCCESS => {
"backup_file": "/tmp/oldgirl.txt.16864.2020-03-04@13:13:50~",
"changed": true,
"checksum": "e5fcfd07f21f35adb159418b01b1f61274fb9134",
"dest": "/tmp/oldgirl.txt",
"gid": 1000,
"group": "oldboy",
"md5sum": "ba56bdae36d0506a311e3098b8e97882",
"mode": "0755",
"owner": "oldboy",
"size": 11,
"src": "/root/.ansible/tmp/ansible-tmp-1584427221.9-51998958880411/source",
"state": "file",
"uid": 1000
}
192.168.9.6 | SUCCESS => {
---与上面相同,省略若干行---
}
---检查内容是否修改
[root@m01 ~]# ansible oldboy -m command -a "cat /tmp/oldgirl.txt"
192.168.9.6 | SUCCESS | rc=0 >>
I am oldboy
192.168.9.5 | SUCCESS | rc=0 >>
I am oldboy
---检查是否备份,command模块无法使用通配符
[root@m01 ~]# ansible oldboy -m command -a "ls /tmp/oldgirl.txt*"
192.168.9.5 | FAILED | rc=2 >>
ls: 无法访问/tmp/oldgirl.txt*: 没有那个文件或目录non-zero return code
192.168.9.6 | FAILED | rc=2 >>
ls: 无法访问/tmp/oldgirl.txt*: 没有那个文件或目录non-zero return code
---检查是否备份,shell模块可以使用通配符
[root@m01 ~]# ansible oldboy -m shell -a "ls /tmp/oldgirl.txt*"
192.168.9.5 | SUCCESS | rc=0 >>
/tmp/oldgirl.txt
/tmp/oldgirl.txt.16864.2020-03-04@13:13:50~
192.168.9.6 | SUCCESS | rc=0 >>
/tmp/oldgirl.txt
/tmp/oldgirl.txt.11076.2020-03-12@15:15:55~
2.2 file模块功能说明
功能说明:创建及设置文件(目录)属性。
file模块参数表示例11:创建数据文件(普通文件、目录、软链接文件)
# 远程创建目录信息。
[root@m01 ~]# ansible oldboy -m file -a "dest=/tmp/oldboy_dir state=directory"
192.168.9.5 | SUCCESS => {
"changed": true,
"gid": 0,
"group": "root",
"mode": "0755",
"owner": "root",
"path": "/tmp/oldboy_dir",
"size": 6,
"state": "directory",
"uid": 0
}
192.168.9.6 | SUCCESS => {
---与上面相同,省略若干行---
}
# 远程创建文件信息
[root@m01 ~]# ansible oldboy -m file -a "dest=/tmp/oldboy_file owner=ftp group=oldboy mode=777 state=touch"
192.168.9.5 | SUCCESS => {
"changed": true,
"dest": "/tmp/oldboy_file",
"gid": 1000,
"group": "oldboy",
"mode": "0777",
"owner": "ftp",
"size": 0,
"state": "file",
"uid": 14
}
192.168.9.6 | SUCCESS => {
---与上面相同,省略若干行---
}
[root@m01 ~]# ansible oldboy -m shell -a "ls -l /tmp/oldboy_file"
192.168.9.5 | SUCCESS | rc=0 >>
-rwxrwxrwx 1 ftp oldboy 0 3月 4 13:38 /tmp/oldboy_file
192.168.9.6 | SUCCESS | rc=0 >>
-rwxrwxrwx 1 ftp oldboy 0 3月 12 15:40 /tmp/oldboy_file
# 远程创建链接文件
[root@m01 ~]# ansible oldboy -m file -a "src=/etc/hosts dest=/tmp/link_file state=link"
192.168.9.5 | SUCCESS => {
"changed": true,
"dest": "/tmp/link_file",
"gid": 0,
"group": "root",
"mode": "0777",
"owner": "root",
"size": 10,
"src": "/etc/hosts",
"state": "link",
"uid": 0
}
192.168.9.6 | SUCCESS => {
---与上面相同,省略若干行---
}
# 登录到远程节点主机进行检查
[root@m01 ~]# ansible oldboy -m shell -a "ls -l /tmp/"
192.168.9.6 | SUCCESS | rc=0 >>
总用量 12
drwx------ 2 root root 65 3月 12 15:43 ansible_2JCbDT
lrwxrwxrwx 1 root root 10 3月 12 15:42 link_file -> /etc/hosts ---新建的链接目录
drwxr-xr-x 2 root root 6 3月 12 15:37 oldboy_dir ---新建的目录
-rwxrwxrwx 1 ftp oldboy 0 3月 12 15:40 oldboy_file ---新建的文件
-rwxr-xr-x 1 oldboy oldboy 11 3月 12 15:15 oldgirl.txt
-rwxr-xr-x 1 oldboy oldboy 798 3月 12 15:10 oldgirl.txt.11076.2020-03-12@15:15:55~
192.168.9.5 | SUCCESS | rc=0 >>
总用量 20
---与上面相同,省略若干行---
说明:file模块可以实现数据信息创建,也可以修改数据属性信息。
3. Ansible软件类型模块介绍与实践
yum模块功能说明
功能说明:yum包管理模块。
示例12:批量安装nmap软件包。
# 执行批量安装软件命令。
[root@m01 ~]# ansible oldboy -m shell -a "rpm -qa nmap warn=false"
192.168.9.5 | SUCCESS | rc=0 >>
192.168.9.6 | SUCCESS | rc=0 >>
[root@m01 ~]# ansible oldboy -m yum -a "name=nmap state=installed"
192.168.9.5 | SUCCESS => {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"2:nmap-6.40-19.el7.x86_64 providing nmap is already installed"
]
}
192.168.9.6 | SUCCESS => {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"2:nmap-6.40-19.el7.x86_64 providing nmap is already installed"
]
}
# 执行结果验证
[root@m01 ~]# ansible oldboy -m shell -a "rpm -qa nmap warn=false"
192.168.9.5 | SUCCESS | rc=0 >>
nmap-6.40-19.el7.x86_64
192.168.9.6 | SUCCESS | rc=0 >>
nmap-6.40-19.el7.x86_64
Ansible yum模块背后的原理:/usr/bin/python /usr/bin/yum -y install nmap。
4. Ansible网络服务类型模块介绍与实践
4.1 service/systemd模块功能说明
service/systemd模块功能参数说明示例13:管理crond定时任务
service/systemd模块管理crond定时任务服务(重启、停止、开启)。
# 先检查crond状态
[root@m01 ~]# ansible oldboy -m shell -a "systemctl status crond"
192.168.9.6 | SUCCESS | rc=0 >>
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 三 2020-03-11 10:30:11 CST; 1 day 7h ago
---省略若干行---
192.168.9.5 | SUCCESS | rc=0 >>
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 六 2020-02-29 16:52:22 CST; 3 days ago
---省略若干行---
[root@m01 ~]# ansible oldboy -m service -a "name=crond state=stopped enabled=no"
说明:此处的name是服务名,表示将crond停止,并且取消开机自启动。
192.168.9.5 | SUCCESS => {
"changed": true,
"enabled": false,
"name": "crond",
"state": "stopped",
"status": {
---省略若干行---
}
}
192.168.9.6 | SUCCESS => {
---省略若干行---
}
}
[root@m01 ~]# ansible oldboy -m shell -a "systemctl status crond"
192.168.9.6 | FAILED | rc=3 >>
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; disabled; vendor preset: enabled)
Active: inactive (dead)
---省略若干行---
192.168.9.5 | FAILED | rc=3 >>
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; disabled; vendor preset: enabled)
Active: inactive (dead)
---省略若干行---
[root@m01 ~]# ansible oldboy -m systemd -a "name=crond enabled=yes state=started"
---省略若干行---
[root@m01 ~]# ansible oldboy -m shell -a "systemctl status crond"
192.168.9.6 | SUCCESS | rc=0 >>
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 四 2020-03-12 18:22:10 CST; 35s ago
---省略若干行---
192.168.9.5 | SUCCESS | rc=0 >>
---省略若干行---
提示:service模块对CentOS7依然有效,但是CentOS7的启动方式已经改成了systemd。
4.2 cron模块功能说明
功能说明:管理定时任务条目信息模块。
cron模块功能参数1 cron模块功能参数2编写定时任务利用ansible软件,其实和直接编写定时任务文件的思路是一样的,只不过有些参数信息发生了变化。根据下表信息,表示定时任务传统编写和ansible软件编写对比说明,便于初学者更好地理解ansible的定时任务模块:系统定时任务编写格式与ansible定时任务对比表。
系统定时任务与ansible定时任务对比示例14:设置时间同步定时任务
[root@m01 ~]# ansible oldboy -m cron -a "name='oldboy' job='/usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1' minute=*/5"
192.168.9.6 | SUCCESS => {
"changed": true,
"envs": [],
"jobs": [
"oldboy"
]
}
192.168.9.5 | SUCCESS => {
"changed": true,
"envs": [],
"jobs": [
"oldboy"
]
}
# 检查验证
[root@m01 ~]# ansible oldboy -m shell -a "crontab -l | tail -2"
192.168.9.5 | SUCCESS | rc=0 >>
#Ansible: oldboy
*/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1
192.168.9.6 | SUCCESS | rc=0 >>
#Ansible: oldboy
*/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1
# 删除定时任务:
ansible oldboy -m cron -a "name='oldboy' state=absent"
4.3 mount模块功能说明
功能说明:挂载及卸载文件系统(本地或者远程)
mount模块功能参数示例15:批量挂载NFS到本地Web服务。
# 配置所有主机NFS客户端环境。
[root@m01 ~]# ansible oldgirl -m shell -a "yum install nfs-utils rpcbind -y warn=false"
[root@m01 ~]# ansible oldgirl -m shell -a "systemctl start rpcbind"
192.168.9.7 | SUCCESS | rc=0 >>
192.168.9.9 | SUCCESS | rc=0 >>
[root@m01 ~]# ansible oldgirl -m shell -a "systemctl status rpcbind"
[root@m01 ~]# ansible oldgirl -m shell -a "showmount -e 192.168.9.6"
192.168.9.9 | SUCCESS | rc=0 >>
Export list for 192.168.9.6:
/oldboy 192.168.9.0/24
/data 192.168.9.0/24
192.168.9.7 | SUCCESS | rc=0 >>
Export list for 192.168.9.6:
/oldboy 192.168.9.0/24
/data 192.168.9.0/24
# 检查NFS客户端环境。
[root@m01 ~]# ansible oldgirl -m shell -a "grep data /etc/fstab"
192.168.9.9 | SUCCESS | rc=0 >>
192.168.9.6:/data /data nfs defaults,soft 0 0
192.168.9.7 | SUCCESS | rc=0 >>
192.168.9.6:/data /data nfs defaults,soft 0 0
[root@m01 ~]# ansible oldgirl -m shell -a "df -h | grep data"
192.168.9.9 | FAILED | rc=1 >>
non-zero return code
192.168.9.7 | SUCCESS | rc=0 >>
192.168.9.6:/data 17G 1.3G 16G 8% /data
# 执行挂载命令state=present,只挂载配置写入/etc/fstab。
[root@m01 ~]# ansible oldgirl -m mount -a "src=192.168.9.6:/data path=/data fstype=nfs opts=defaults state=present"
192.168.9.9 | SUCCESS => {
"changed": true,
"dump": "0",
"fstab": "/etc/fstab",
"fstype": "nfs",
"name": "/data",
"opts": "defaults",
"passno": "0",
"src": "192.168.9.6:/data"
}
192.168.9.7 | SUCCESS => {
---省略若干行---
}
# 验证确实写入了/etc/fstab。
[root@m01 ~]# ansible oldgirl -m shell -a "grep data /etc/fstab"
192.168.9.9 | SUCCESS | rc=0 >>
192.168.9.6:/data /data nfs defaults 0 0
192.168.9.7 | SUCCESS | rc=0 >>
192.168.9.6:/data /data nfs defaults 0 0
# 验证但是没有实际挂载设备。
[root@m01 ~]# ansible oldgirl -m shell -a "df -h | grep data"
192.168.9.7 | SUCCESS | rc=0 >>
192.168.9.6:/data 17G 1.3G 16G 8% /data
192.168.9.9 | FAILED | rc=1 >>
non-zero return code
# 挂载设备,并写入/etc/fstab。
[root@m01 ~]# ansible oldgirl -m mount -a "src=192.168.9.6:/data path=/data fstype=nfs opts=defaults state=mounted"
192.168.9.7 | SUCCESS => {
"changed": true,
"dump": "0",
"fstab": "/etc/fstab",
"fstype": "nfs",
"name": "/data",
"opts": "defaults",
"passno": "0",
"src": "192.168.9.6:/data"
}
192.168.9.9 | SUCCESS => {
---省略若干行---
}
# 验证确实真正挂载了
[root@m01 ~]# ansible oldgirl -m shell -a "df -h | grep data"
192.168.9.9 | SUCCESS | rc=0 >>
192.168.9.6:/data 17G 1.3G 16G 8% /mnt
192.168.9.7 | SUCCESS | rc=0 >>
192.168.9.6:/data 17G 1.3G 16G 8% /data
# 卸载设备。
[root@m01 ~]# ansible oldgirl -m mount -a "src=192.168.9.6:/data path=/data fstype=nfs opts=defaults state=unmounted"
192.168.9.9 | SUCCESS => {
"changed": true,
"dump": "0",
"fstab": "/etc/fstab",
"fstype": "nfs",
"name": "/data",
"opts": "defaults",
"passno": "0",
"src": "192.168.9.6:/data"
}
192.168.9.7 | SUCCESS => {
---省略若干行---
}
# 验证确实下载了。
[root@m01 ~]# ansible oldgirl -m shell -a "df -h | grep data"
192.168.9.9 | FAILED | rc=1 >>
non-zero return code
192.168.9.7 | FAILED | rc=1 >>
non-zero return code
# 卸载设备并清理/etc/fstab。
[root@m01 ~]# ansible oldgirl -m mount -a "src=192.168.9.6:/data path=/data fstype=nfs opts=defaults state=absent"
192.168.9.9 | SUCCESS => {
"changed": true,
"dump": "0",
"fstab": "/etc/fstab",
"fstype": "nfs",
"name": "/data",
"opts": "defaults",
"passno": "0",
"src": "192.168.9.6:/data"
}
192.168.9.7 | SUCCESS => {
---省略若干---
}
# 验证/etc/fstab是否清理,已经清理。
[root@m01 ~]# ansible oldgirl -m shell -a "grep mnt /etc/fstab"
192.168.9.9 | FAILED | rc=1 >>
non-zero return code
192.168.9.7 | FAILED | rc=1 >>
non-zero return code
5. Ansible用户和组类型模块介绍与实践
5.1 user模块功能说明
功能说明:管理系统用户。
user模块功能参数示例16:创建test用户
UID设置为8888,不能登录不创建家目录。
[root@m01 ~]# ansible oldboy -m user -a "name=test uid=8888 shell=/sbin/nologin create_home=no"
[root@m01 ~]# ansible oldboy -m shell -a "tail -1 /etc/passwd"
5.2 group模块功能说明
功能说明:管理系统用户。
group模块功能参数[root@m01 ~]# ansible oldboy -m group -a "name=sa gid=9999"
---创建sa组,GID为9999
192.168.9.5 | SUCCESS => {
"changed": true,
"gid": 9999,
"name": "sa",
"state": "present",
"system": false
}
192.168.9.6 | SUCCESS => {
"changed": true,
"gid": 9999,
"name": "sa",
"state": "present",
"system": false
}
[root@m01 ~]# ansible oldboy -m shell -a "tail -1 /etc/group"
192.168.9.6 | SUCCESS | rc=0 >>
sa:x:9999:
192.168.9.5 | SUCCESS | rc=0 >>
sa:x:9999:
网友评论