设为首页 收藏本站
查看: 1101|回复: 0

[经验分享] Ansible配置管理play-book

[复制链接]

尚未签到

发表于 2018-7-30 12:40:55 | 显示全部楼层 |阅读模式
Play-book
  Ansible是一个完全简单的模型驱动的配置管理、部署和命令执行框架。
  对于ansible的playbook就是完全的配置管理框架,它类似于saltstack的state system
  对于被管理的节点不需要安装任何软件依赖及ansible
  使用playbook的准备工作:

  •   选择一台机器作为你的管理节点,并且安装ansible
  •   确保你的这台机器上拥有你所要管理机器的SSH秘钥,因为ansible使用SSH登录管理
  •   创建主机文件,将你所要管理的节点信息加入到主机文件中
  请确保以上三步已经被正确设置好,可以使用以下命令来验证:
ansible testgroup -m ping  

  
test1 | success >> {
  
    "changed": false,
  
    "ping": "pong"
  
}
  

  
lightcloud | success >> {
  
    "changed": false,
  
    "ping": "pong"
  
}
  ansible连接到testgroup中的每一台主机,传送所需的模块至每个节点并执行,返回模块的输出内容。
  ansible目前有很多管理模块,我们可以根据这些模块来写出等幂的playbook。
  模拟这样的一个场景,使用ansible的playbook来管理节点的DNS配置文件。这里用到以下几个知识点:

  •   使用template模块,使用模板文件动态生成dns配置文件中的nameserver
  •   使用fetch模块,将被管理节点上的dns配置文件fetch到管理节点
  •   模板的使用,编写模板文件
  Playbook:
---  
- hosts: testgroup
  
  vars:
  
      name: coocla
  
      resolver-servers:
  
      - 223.5.5.5
  
      - 223.6.6.6
  
  user: root
  
  tasks:
  
  - name: Deploy resolv.conf
  
    template: src=files/resolv.j2 desc=/etc/resolv.conf mode=0444
  
  - name: Fetch node file
  
    fetch: src=/etc/resolv.conf desct=/tmp/fetchfile
  这里我们首先指定了hosts(target),然后声明了两个变量name和resolver-server,并且使用root来运行此次的task, 使用tasks关键字来声明以下内容为需要运行的任务,任务详情则是调用对于功能的module
  Template:
# resolv.j2 by {{ name | upper }}  
# for  {{ ansible_eth0.ipv4.address }}
  
{% if domain is defined -%}
  
domain {{ domain }}
  
{% endif -%}
  
{% for ns in resolvers -%}
  
nameserver {{ ns }}
  
{% endfor %}
  这里我们引用了定义的变量name,并使用过滤器赋值给upper将其转换为大写;其次我们引用了ansible的facts(类似于saltstack中的grains),内置的facts变量可以使用setup模块来查看(ansible testgroup -m setup)。接下来则使用了jinja的if和for语法来对变量进行判断和循环引用。
  目前为止一切工作准备就绪,现在可以把这些任务跑一跑了:
ansible-playbook learn-template.yml  

  
PLAY [testgroup] **************************************************************
  

  
GATHERING FACTS ***************************************************************
  
ok: [test1]
  
ok: [lightcloud]
  

  
TASK: [Depoly resolv.conf] ****************************************************
  
changed: [test1]
  
changed: [lightcloud]
  

  
TASK: [Fetch node file] *******************************************************
  
changed: [test1]
  
changed: [lightcloud]
  

  
PLAY RECAP ********************************************************************
  
lightcloud                 : ok=3    changed=2    unreachable=0    failed=0
  
test1                      : ok=3    changed=2    unreachable=0    failed=0
  由以上输出可见,一共有个两个任务,在两个节点上均正常运行结束.
cat /tmp/fetchfile/xxxx/etc/resolv.conf  
# resolv.in by COOCLA
  
# for xxxx
  
nameserver 223.5.5.5
  
nameserver 223.6.6.6
  查看fetch到的文件内容也是我们之前预期的结果。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-543596-1-1.html 上篇帖子: Ansible匹配主机或组的Patterns 下篇帖子: ansible推送ssh公钥
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表