ansible module

最近看了一下ansible,挺火的一个配置管理工具,对比老大哥puppet,使用起来要简单一些,并且可以批量执行命令,对比同是python语言编写的saltstack,不需要安装客户端(基于paramiko),也更灵活一些,尤其我们现有的登录方式,通过跳板机加密钥,改造成ansible成本很低,准备学习一下以后在生产上使用。
ansible已被红帽收购,目前出到2.0了,和红帽的朋友聊了一下,这个配合现在大火的openstack(红帽是其代码最大贡献者之一),看来以后会成为自动化运维的一个趋势。
官网地址http://docs.ansible.com/

  • 入门
    首先把ssh密钥搞好,这里就不说了,保证master和minion之间不通过密码
    定义主机和组:
    vim /etc/ansible/hosts #默认的文件位置,也可执行ansible时手动指定hosts文件,通过-i参数
[test]
10.199.2.45
10.199.2.46
[web]
10.199.2.[42:47]  #=10.199.2.42\43\44\45\46\47
test.case.com  #主机名定义

ping模块

ansible test -m ping -u sre -s       #-m接模块名,因为我们使用的是sre账户登录后通过sudo的方式,-u接用户,-s表示sudo方式执行
ansible test:\!10.199.2.46 -m ping -u sre -s       #:\!排除某个主机
ansible 10.199.2.46 -m ping -u sre -s       #当然也可以直接接ip而不使用组进行

ansible自带了很多模块
可以通过ansible-doc -l 查看总共有哪些模块,ansible-doc ping 显示某个模块的用法,ansible-doc -s ping 显示某个模块在playbooks中的代码片段
远程执行命令模块:
远程执行命令可能是ansible最常用也是最方便的一个功能,这里举几个例子
command模块

ansible test -a 'w' -u sre -s     #默认模块command,实现执行远程命令,-a接模块参数

script模块
master先创建脚本1.sh

#!/bin/bash
ls /tmp/
ansible test -m script -a '1.sh' -u sre -s         #script模块相当于scp+shell,将本地脚本在远端minion进行执行

shell模块
shell和command模块很类似,看帮助信息了解到command和shell功能基本一致,但shell可以使用环境变量、管道等,功能更强大

ansible -s agent -m shell -a 'sudo su - game -c "/bin/sh /export/install/scripts/zabbix/zabbix.sh 'enable'"'

**copy模块 **

ansible test -m copy -a 'src=1.sh dest=/tmp/ owner=root group=root mode=0755' -u sre -s    #将本地1.sh文件传到远端,如第二次执行此命令,如无更新,则远端无更新,有更新,则远端更新

yum模块

ansible test -m yum -a "name=nc state=latest" -u sre -s

cron模块

ansible test -m cron -a "name='test' job='ls /tmp' minute=*/2 hour=3,4,5" -u sre -s
#Ansible: test        #在agent上执行命令crontab -l查看
*/2 3,4,5 * * * ls /tmp
ansible test -m cron -a "name='test' state=absent" -u sre -s #删除该条cron

service模块

ansible test -m service -a "name=ntpd state=started" -u sre -s      #启动ntpd服务
ansible test -m service -a "name=ntpd state=stopped" -u sre -s    #停止ntpd服务

user模块

ansible test -m user -a "name=test123" -u sre -s         #创建用户
ansible test -m user -a "name=test123 state=absent remove=yes" -u sre -s     #删除用户并删除家目录

lineinfile模块

用于文件内的内容处理
ansible ctx-lf -m lineinfile -a "dest=/tmp/sudoers line='appuser  ALL=(ALL)       NOPASSWD:ALL' insertafter=^sre" -u sre -s -i host  #在sudo文件中sre开头之后加入line=的内容,insertafter可以写正则或EOF(结尾),同理还有insertbefore也可以写正则或BOF(开头)
ansible ctx-lf -m lineinfile -a "dest=/tmp/sudoers state=absent regexp=^appuser" -u sre -s -i hosts  #去掉正则匹配的所有行
ansible ctx-lf -m lineinfile -a "dest=/tmp/sudoers regexp=^sre line='#sre  ALL=(ALL)       NOPASSWD:ALL'" -u sre -s -i hosts  #将sre开头的最后匹配的一行前边加上#
也可以用()形式做替代变更,类似sed
ansible ctx-lf -m lineinfile -a "dest=/tmp/sudoers regexp=^(sre.*)$ line='#\1' backrefs=yes" -u sre -s -i hosts   \1表示第一个()里的内容,注意这种用法需要backrefs为yes,开启扩展正则匹配
ansible ctx-lf -m lineinfile -a "dest=/tmp/sudoers regexp=^(sre.*)$ line='123123' validate='visudo -cf %s'" -u sre -s -i hosts   #加入validate的验证,比如sudo文件如果改错了,可能影响整个系统的管理,加入验证之后,如果修改的sudo文件格式错误,将不会保存

lineinfile模块栗子:在指定行后添加

addline.jpg

lineinfile模块栗子:文件末尾添加

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

推荐阅读更多精彩内容

  • Ansible简介 Ansible是2013年推出的一款IT自动化和DevOps软件,目前由Redhat已签署An...
    魏镇坪阅读 2,335评论 1 6
  • 作为背锅侠运维工作的基本流程 运维工具的分类 : ansible的模块化: ansible密钥登陆 ansible...
    二郎5阅读 4,083评论 0 10
  • Summary based on Ansible Tutorial Basic default inventory...
    abrocod阅读 772评论 0 5
  • 大家都知道,Linux系统提供了非常多非常多的命令或工具,这些命令都各有所长,都是系统需要的。但我们精力有限,要掌...
    刘振锋阅读 11,430评论 10 90
  • “沫沫,有人跟我表白了”小西说,我一边往嘴巴里送着石锅拌饭,一边说,“你上辈子肯定是拯救了星河系,这辈子才会桃花这...
    徽姑凉阅读 656评论 0 4