2019-04-24-day 39 ansible的模块以及参数讲解

第1章 ansible的模块以及参数讲解

1.1 ansible的模块说明

常用模块 模块说明
command 执行命令模块,ansible命令执行的默认模块
shell 执行shell命令模块
script 执行脚本在远端服务器上(本地服务器上没有脚本)
copy 把本地文件拷贝到远端服务器
file 设定文件(目录)属性模块
service 系统服务管理模块(CentOS6使用)
systemd 系统服务管理模块(CentOS7使用)
cron 定时任务管理模块
yum yum软件包安装管理模块
mount 挂载设备管理模块
user 用户管理模块

1.2 ansible的模块说明

1.2.1 配置ansible主机列表,以下所有例子都使用此主机列表

[root@m01 ~]$ cat /etc/ansible/hosts
[oldboy]
172.16.1.31
172.16.1.41

1.2.2 shell模块功能说明

功能说明:执行一个命令在远程节点上
官方链接:http://docs.ansible.com/ansible/latest/shell_module.html
1、 可以支持> < | &等特殊符号,并且可以同时执行多条命令
例如:一条命令查看远端的内存和eth1的IP

[root@m01 ~]$ ansible oldboy -m shell -a "free -m;ifconfig eth1"
172.16.1.31 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:            972         106         738           7         127         716
Swap:           767           0         767
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.1.31  netmask 255.255.0.0  broadcast 172.16.255.255
        inet6 fe80::2ab4:7695:6d12:6e55  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c9:33:b4  txqueuelen 1000  (Ethernet)
        RX packets 389  bytes 307066 (299.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 271  bytes 33736 (32.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

172.16.1.41 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:            972         100         745           7         126         724
Swap:           767           0         767
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.1.41  netmask 255.255.0.0  broadcast 172.16.255.255
        inet6 fe80::6f63:e4ca:a29a:1712  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:4f:d0:0d  txqueuelen 1000  (Ethernet)
        RX packets 391  bytes 307134 (299.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 271  bytes 33604 (32.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2、远程执行脚本:脚本必须在远端存在
远端脚本内容:

[root@nfs01 ~]$ cat /server/scripts/test.sh 
#!/bin/bash
for n in {1..5}
do
  echo $n
done

执行:

[root@m01 ~]$ ansible oldboy -m shell -a "/bin/sh /server/scripts/test.sh"
172.16.1.31 | CHANGED | rc=0 >>
1
2
3
4
5
172.16.1.41 | CHANGED | rc=0 >>
1
2
3
4
5

1.2.3 script模块功能说明

功能说明:在远程节点上运行本地脚本
官方链接:http://docs.ansible.com/ansible/latest/script_module.html
实践:远端运行本地脚本
查看本地脚本内容:

#!/bin/bash
for n in {6..10}
do
  echo $n
done

执行:

[root@m01 ~]$ ansible oldboy -m script -a "/server/scripts/test.sh"
172.16.1.31 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 172.16.1.31 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 172.16.1.31 closed."
    ], 
    "stdout": "6\r\n7\r\n8\r\n9\r\n10\r\n", 
    "stdout_lines": [
        "6", 
        "7", 
        "8", 
        "9", 
        "10"
    ]
}
172.16.1.41 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 172.16.1.41 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 172.16.1.41 closed."
    ], 
    "stdout": "6\r\n7\r\n8\r\n9\r\n10\r\n", 
    "stdout_lines": [
        "6", 
        "7", 
        "8", 
        "9", 
        "10"
    ]
}

1.2.4 copy模块功能说明

功能说明:复制文件到远程主机
官方链接:http://docs.ansible.com/ansible/latest/copy_module.html

模块参数 说明
src 文件在本地的路径(可以是绝对路径,也可以是相对路径)
如果路径以“/”结束,只将该目录下的内容拷贝到目的地
如果路径不以“/”结束,那么目录和目录下的内容都会被复制
dest 文件拷贝到远端的绝对路径
owner 定义文件或目录在远端主机的属主名称
group 定义文件或目录在远端主机的属组名称
mode 定义文件或目录在远端主机的权限信息
backup 创建一个包含时间戳信息的备份文件,默认为no,创建备份文件为yes
content 代替src参数时,将文件内容直接设置为指定值,并且只能设置简单值
force 默认为yes,当远程文件内容和源文件内容不同时,将覆盖目标文件

参数实践:
1、将本地的/etc/hosts文件拷贝到远程主机的/tmp目录下,并且设置权限为755。

[root@m01 ~]$ ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/ mode=755"
172.16.1.31 | CHANGED => {
    "changed": true, 
    "checksum": "e52c528913b5c22d388cc2a18f6943641c8442c3", 
    "dest": "/tmp/hosts", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "fa2c31e4614da1256984a0307ba4f31f", 
    "mode": "0755", 
    "owner": "root", 
    "size": 332, 
    "src": "/root/.ansible/tmp/ansible-tmp-1556176066.11-6180630705927/source", 
    "state": "file", 
    "uid": 0
}
172.16.1.41 | CHANGED => {
    "changed": true, 
    "checksum": "e52c528913b5c22d388cc2a18f6943641c8442c3", 
    "dest": "/tmp/hosts", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "fa2c31e4614da1256984a0307ba4f31f", 
    "mode": "0755", 
    "owner": "root", 
    "size": 332, 
    "src": "/root/.ansible/tmp/ansible-tmp-1556176066.12-240612656636195/source", 
    "state": "file", 
    "uid": 0
}

查看结果:

[root@nfs01 /tmp]$ ll
总用量 4
-rwxr-xr-x 1 root root 332 4月  25 15:07 hosts
[root@backup /tmp]$ ll
总用量 4
-rwxr-xr-x 1 root root 332 4月  25 15:07 hosts

2、在第一个例子的前提下,将oldboy写入到远程主机的/tmp/hosts文件中,将属主和属组设为oldboy并备份:

[root@m01 ~]$ ansible oldboy -m copy -a "content=oldboy dest=/tmp/hosts owner=oldboy group=oldboy backup=yes" 
172.16.1.31 | CHANGED => {
    "backup_file": "/tmp/hosts.10398.2019-04-25@15:17:59~", 
    "changed": true, 
    "checksum": "da3a7ab3551120059810d0c7156a8150a0bc245a", 
    "dest": "/tmp/hosts", 
    "gid": 1000, 
    "group": "oldboy", 
    "md5sum": "890b185727556f1be31d7fe5ee5ce4dc", 
    "mode": "0755", 
    "owner": "oldboy", 
    "size": 6, 
    "src": "/root/.ansible/tmp/ansible-tmp-1556176677.67-124571767570836/source", 
    "state": "file", 
    "uid": 1000
}
172.16.1.41 | CHANGED => {
    "backup_file": "/tmp/hosts.10977.2019-04-25@15:17:59~", 
    "changed": true, 
    "checksum": "da3a7ab3551120059810d0c7156a8150a0bc245a", 
    "dest": "/tmp/hosts", 
    "gid": 1000, 
    "group": "oldboy", 
    "md5sum": "890b185727556f1be31d7fe5ee5ce4dc", 
    "mode": "0755", 
    "owner": "oldboy", 
    "size": 6, 
    "src": "/root/.ansible/tmp/ansible-tmp-1556176677.68-215982150895297/source", 
    "state": "file", 
    "uid": 1000

查看结果:

[root@nfs01 /tmp]$ ll
总用量 8
-rwxr-xr-x 1 oldboy oldboy   6 4月  25 15:17 hosts
-rwxr-xr-x 1 root   root   332 4月  25 15:11 hosts.10398.2019-04-25@15:17:59~

1.2.5 file模块功能说明

功能说明:设置文件属性
官方链接:http://docs.ansible.com/ansible/latest/file_module.html

模块参数 说明
src 要链接的文件路径(只能应用state=link),创建链接文件时使用
path 远端创建的文件路径
owner 定义文件或目录的属主名称
group 定义文件或目录的属组名称
mode 定义文件或目录的权限信息
recurse 递归授权
state= 指定参数touch:创建文件或更新时间戳信息
指定参数directory:创建目录
指定参数absent:目录以及文件被递归删除
指定参数link:创建或更改软链接
指定参数hard:创建硬链接

注:file模块可以使用command模块代替。
替代方案:

ansible oldboy  -m command -a " mkdir /tmp/oldboy warn=false "
ansible oldboy  -m command -a " touch /tmp/oldboy warn=false "
ansible oldboy  -m command -a "chmod 644 /etc/hosts warn=false"
ansible oldboy  -m command -a "chown oldboy.oldboy /etc/hosts warn=false"

举例对比说明:
1、创建目录:

mkdir /tmp/oldboy_dir
ansible oldboy -m file -a "dest=/tmp/oldboy_dir state=directory"

2、递归设置权限:

ansible oldboy -m file -a "dest=/tmp/oldboy_dir state=directory mode=644 recurse=yes"

3、创建文件:

touch /tmp/oldboy_file
ansible oldboy -m file -a "dest=/tmp/oldboy_file state=touch"

4、删除文件:

rm -f /tmp/oldboy_file
ansible oldboy -m file -a "dest=/tmp/oldboy_file state=absent"

5、创建链接文件:

ln -s /etc/hosts /tmp/link_file
ansible oldboy -m file -a "src=/etc/hosts dest=/tmp/link_file state=link"

6、更改文件属组、属主和权限

ansible oldboy -m file -a "dest=/tmp/oldboy_file state=touch owner=oldboy group=oldboy mode=644"

1.2.6 systemd模块功能说明

功能说明:启动停止服务
官方链接:http://docs.ansible.com/ansible/latest/service_module.html

模块参数 说明
name 想要管理的服务的名称
state 想要管理的服务的状态,包括started、stopped、restarted
enable 是否开机自启动,状态为yes no

实践:

[root@m01 ~]$ ansible oldboy -m systemd -a "name=crond.service enabled=no state=stopped "
[root@nfs01 ~]$ ansible oldboy -m command -a "systemctl status crond"
[root@m01 ~]$ ansible oldboy -m systemd -a "name=crond.service enabled=yes state=started"

1.2.7 cron模块功能说明

功能说明:管理定时任务条目信息模块
官方链接:http://docs.ansible.com/ansible/latest/cron_module.html

模块参数 说明
name 对想要执行的定时任务的描述
minute 运行定时任务的分钟时间信息
hour 运行定时任务的小时时间信息
day 运行定时任务的日期时间信息
month 运行定时任务的月份时间信息
weekday 运行定时任务的星期时间信息
job 运行的定时任务内容
state 参数为absent是删除定时任务
disabled 参数为yes是注释掉定时任务
backup 在修改定时任务前进行备份

示例1:添加如下定时任务:

05 03 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1

命令如下:

ansible oldboy -m cron -a "name='backup data' minute=05 hour=03 job='/bin/sh /server/scripts/backup.sh >/dev/null 2>&1'"

结果:

#Ansible: backup data
05 03 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1

示例2:删除定时任务:

ansible oldboy -m cron -a "name='backup data' state=absent"

1.2.8 yum模块功能说明

功能说明:yum包管理模块
官方链接:http://docs.ansible.com/ansible/latest/yum_module.html

模块参数 说明
name 需要安装的软件包名称信息
state 是安装(present or installed)或者卸载(absent or removed)

注意:不要使用yum卸载,如果要卸载,就用rpm -e卸载。
示例:安装Nginx服务

ansible oldboy -m yum -a "name=nginx state=installed"

检查结果:

[root@nfs01 oldboy_dir]# rpm -qa nginx
nginx-1.10.2-1.el6.x86_64
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容