2019-04-24Day39 ansible模块及参数

1、shell模块

功能说明:在远程节点上执行一个命令,且支持特殊符号< > | &等

[root@m01~]# ansible-doc -s shell
- name: Execute commands in nodes.
  shell:
      chdir:                 # cd into this directory before running the command
      creates:               # a filename, when it already exists, this step will
                               *not* be run.
      executable:            # change the shell used to execute the command.
                               Should be an
                               absolute path to the
                               executable.
      free_form:             # (required) The shell module takes a free form
                               command to run, as a
                               string.  There's not
                               an actual option
                               named "free form".
                               See the examples!
      removes:               # a filename, when it does not exist, this step will
                               *not* be run.
      stdin:                 # Set the stdin of the command directly to the
                               specified value.
      warn:                  # if command warnings are on in ansible.cfg, do not
                               warn about this
                               particular line if

实践:增加文本

[root@m01~]# ansible oldboy -m shell -a "echo oldboy >/tmp/tmp.txt"
172.16.1.31 | CHANGED | rc=0 >>
172.16.1.41 | CHANGED | rc=0 >>

[root@m01~]# ansible oldboy -m shell -a "cat /tmp/tmp.txt"
172.16.1.41 | CHANGED | rc=0 >>
oldboy
172.16.1.31 | CHANGED | rc=0 >>
Oldboy

注意:要执行的脚本必须在远端机器上存在。

root@m01/server/scripts]# ansible oldboy -m shell -a "sh /server/scripts/bak.sh"
172.16.1.31 | CHANGED | rc=0 >>
172.16.1.41 | CHANGED | rc=0 >>

2、copy模块

功能:复制文件到远程主机
参数说明:


image.png

实践:

1、把/etc/hosts拷贝到/opt下,权限设置400,用户和组设置root
[root@m01~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/opt owner=root group=root mode=400"
172.16.1.41 | CHANGED => {
    "changed": true, 
    "checksum": "e52c528913b5c22d388cc2a18f6943641c8442c3", 
    "dest": "/opt/hosts", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "fa2c31e4614da1256984a0307ba4f31f", 
    "mode": "0400", 
    "owner": "root", 
    "size": 332, 
    "src": "/root/.ansible/tmp/ansible-tmp-1556093513.66-247733471881082/source", 
    "state": "file", 
    "uid": 0
}
172.16.1.31 | CHANGED => {
    "changed": true, 
    "checksum": "e52c528913b5c22d388cc2a18f6943641c8442c3", 
    "dest": "/opt/hosts", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "fa2c31e4614da1256984a0307ba4f31f", 
    "mode": "0400", 
    "owner": "root", 
    "size": 332, 
    "src": "/root/.ansible/tmp/ansible-tmp-1556093513.65-270555927258619/source", 
    "state": "file", 
    "uid": 0
}
结果:
[root@m01/]# ansible oldboy_pass -m command -a "ls /opt"
172.16.1.40 | CHANGED | rc=0 >>
hosts
172.16.1.30 | CHANGED | rc=0 >>
hosts
2、把/etc/passwd拷贝/tmp下改名为oldgirl,用户和组为oldboy,权限600,如果有存在同名文件覆盖
[root@m01/]# ansible oldboy_pass -m copy -a "src=/etc/passwd dest=/tmp/oldgirl owner=oldboy group=oldboy mode=600"
172.16.1.30 | CHANGED => {
    "changed": true, 
    "checksum": "1263a7c5c95b15b4ea35435fbae126a424f37b4c", 
    "dest": "/tmp/oldgirl", 
    "gid": 1000, 
    "group": "oldboy", 
    "md5sum": "031f4ce8d77faf23cf5c4df9a7adeec5", 
    "mode": "0600", 
    "owner": "oldboy", 
    "size": 1050, 
    "src": "/root/.ansible/tmp/ansible-tmp-1556094254.84-3643956437803/source", 
    "state": "file", 
    "uid": 1000
}
172.16.1.40 | CHANGED => {
    "changed": true, 
    "checksum": "1263a7c5c95b15b4ea35435fbae126a424f37b4c", 
    "dest": "/tmp/oldgirl", 
    "gid": 1000, 
    "group": "oldboy", 
    "md5sum": "031f4ce8d77faf23cf5c4df9a7adeec5", 
    "mode": "0600", 
    "owner": "oldboy", 
    "size": 1050, 
    "src": "/root/.ansible/tmp/ansible-tmp-1556094254.84-274426832795456/source", 
    "state": "file", 
    "uid": 1000
}
结果:
[root@m01/]# ansible oldboy_pass -m command -a "ls /tmp"
172.16.1.40 | CHANGED | rc=0 >>
ansible_command_payload_sK0b3M
oldgirl
172.16.1.30 | CHANGED | rc=0 >>
ansible_command_payload_gDliN9
oldgirl

3、script模块

功能说明:远程节点上执行本地脚本

4、file模块

功能参数:设置文件属性
参数:


image.png
创建软链接:
[root@m01/]# ansible oldboy -m file -a "src=/data/line.sh dest=/data/line.sh_link state=link"
172.16.1.40 | CHANGED => {
    "changed": true, 
    "dest": "/data/line.sh_link", 
    "gid": 0, 
    "group": "root", 
    "mode": "0777", 
    "owner": "root", 
    "size": 13, 
    "src": "/data/line.sh", 
    "state": "link", 
    "uid": 0
}
172.16.1.30 | CHANGED => {
    "changed": true, 
    "dest": "/data/line.sh_link", 
    "gid": 0, 
    "group": "root", 
    "mode": "0777", 
    "owner": "root", 
    "size": 13, 
    "src": "/data/line.sh", 
    "state": "link", 
    "uid": 0
}
结果:
[root@backup/data]# ll /data
总用量 0
-rw-r--r-- 1 root root  0 4月  24 17:03 line.sh
lrwxrwxrwx 1 root root 13 4月  24 17:03 line.sh_link -> /data/line.sh

创建目录:mkdir /tmp/oldboy_dir
ansible oldboy -m file -a “dest=/tmp/oldboy_dir state=directory”

递归设置权限:
ansible oldboy -m file -a “dest=/tmp/oldboy_dir state= directory mode=644 recurse=yes”

创建文件:touch /tmp/oldboy_dir
ansible oldboy -m file -a “dest=/tmp/oldboy_dir state=absent”

创建链接文件:ln -s /etc/hosts /tmp/link_file
ansible oldboy -m file -a “src=/etc/hosts dest=/tmp/link_file state=link”

5、yum模块

功能说明:yum包管理模块

6、service模块(C6)

功能说明:管理服务模块

实践:

[root@m01/]# ansible oldboy -m systemd -a "name=crond.service state=stopped enabled=no"


image.png

[root@m01/]# ansible oldboy -m systemd -a "name=crond state=started enabled=yes"


image.png

[root@m01/]# ansible oldboy -m command -a "systemctl status crond"


image.png

8、cron模块

功能说明:管理定时任务条目信息模块
参数查找 ansible-doc -s cron

定时任务参数:

minute:             # Minute when the job should run ( 0-59, *, */2, etc )
hour:               # Hour when the job should run ( 0-23, *, */2, etc )
day:                # Day of the month the job should run ( 1-31, *, */2, etc )
month:              # Month of the year the job should run ( 1-12, *, */2, etc )    
weekday:            # Day of the week that the job should run ( 0-6 for Sunday-Saturday, *, etc )
job:                 # The command to execute or, if env is set, the value of environment variable. The command should not contain line breaks. Required if
                               state=present.
image.png
创建定时任务:
[root@m01/]# ansible oldboy -m cron -a "name='sync time' minute=00 hour=00 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'"
172.16.1.40 | CHANGED => {
    "changed": true, 
    "envs": [], 
    "jobs": [
        "sync time"
    ]
}
172.16.1.30 | CHANGED => {
    "changed": true, 
    "envs": [], 
    "jobs": [
        "sync time"
    ]
}
结果:
[root@m01/]# ansible oldboy -m command -a "crontab -l"
172.16.1.30 | CHANGED | rc=0 >>
#crond-id-001:time sync by oldboy
*/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1
#Ansible: sync time
00 00 * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

172.16.1.40 | CHANGED | rc=0 >>
#crond-id-001:time sync by oldboy
*/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1
#Ansible: sync time
00 00 * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • ###### Ansible总结 ##### 运维工作: 系统安装(物理机、虚拟机)-->程序包安装、配置、服务启...
    二郎5阅读 2,025评论 0 4
  • 0、运维发展历史 人肉运维——自动化运维——平台化——可视化运维——智能化运维(aiops)开发自动化——开发平台...
    puurutsjdy阅读 312评论 0 0
  • 一.ansible (1) ansible: ansible是一款新出现的自动化运维系统,基于python开发并集...
    楠人帮阅读 1,939评论 0 8
  • 作为背锅侠运维工作的基本流程 运维工具的分类 : ansible的模块化: ansible密钥登陆 ansible...
    二郎5阅读 4,154评论 0 10
  • 以下是不减肥的代理发圈模版 第一个。今天我的朋友来看我,我已经认不出他来了。你们帮我看一下,这是我的错吗?(图片发...
    红颜货水阅读 1,893评论 0 1