zoukankan      html  css  js  c++  java
  • Ansible playbook

    Playbooks 与 adhoc 相比,是一种完全不同的运用 ansible 的方式,是非常之强大的.

      简单来说,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其他系统有不同之处,且非常适合于复杂应用的部署.

      Playbooks 可用于声明配置,更强大的地方在于,在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.并且可以同步或异步的发起任务.

      使用 adhoc 时,主要是使用 /usr/bin/ansible 程序执行任务.而使用 playbooks 时,更多是将之放入源码控制之中,用之推送你的配置或是用于确认你的远程系统的配置是否符合配置规范.

      playbook使用yaml语法。yaml语法可以通过yaml官方资料查看,也可以查看Ansible中文文档的相关介绍。

    ansible-playbook [options] playbook.yml [playbook2 ...]
    

    通过简单的例子来认识playbook

    nginx.yml

    ---
    - hosts: all
    tasks:
        - name: Install Nginx
        yum: name=nginx state=present
        - name: template nginx.conf
        template: src=./nginx.conf.js dest=/etc/nginx/nginx.conf owner=root group=root mode=0644 validate='nginx -t -c %s'
        notify:
            - Restart Nginx Service
    handlers:
        - name: Restart Nginx Service
        service: name=nginx state=restarted
    
    1. 第一行表示该文件时yaml文件,非必须
    2. 第二行定义了该playbook针对的主机目标,all表示针对所有主机;这个参数支持Ad-Hoc模式的所有参数也支持自定义组
    3. 第三行定义了这个playbook的tasks集合
    4. 第四行定义一个tasks的名称,非必要,在运行playbook的时候可以比较明了的显示playbook运行到哪一步,建议根据tasks实际任务命名
    5. 第五行定义了一个状态的action,这里使用的是yum模块安装nginx软件包
    6. 第六行到第九行使用template模板去管理/etc/nginx/nginx.conf文件,owner和group定义该文的属主和属组,使用validate参数指定文件生产后使用nginx -t -c %s命令去做nginx文件语法验证,notify是触犯handlers,如果同步后,文件的MD5值有变化会触发Restart Nginx Service这个handler。
    7. 第十行到十二行是定义一个handler状态让nginx服务重启,handler的名称是Restart Nginx Service。

    检查playbook文件的语法

    ansible-playbook nginx.yml --syntax-check
    
    playbook: nginx.yml
    

    执行nginx.yml剧本

    ansible-playbook -i hosts nginx.yml 
    
    PLAY [all] *************************************************************************************************************
    
    TASK [Gathering Facts] *************************************************************************************************************
    ok: [172.16.1.11]
    ok: [172.16.1.10]
    
    TASK [Install Nginx] *************************************************************************************************************
    changed: [172.16.1.10]
    changed: [172.16.1.11]
    
    TASK [template nginx.conf] *************************************************************************************************************
    ok: [172.16.1.10]
    ok: [172.16.1.11]
    
    PLAY RECAP *************************************************************************************************************
    172.16.1.10                : ok=3    changed=1    unreachable=0    failed=0   
    172.16.1.11                : ok=3    changed=1    unreachable=0    failed=0
  • 相关阅读:
    自制 os 极简教程1:写一个操作系统有多难
    面试官问我redis数据类型,我回答了8种
    全网最硬核讲解计算机启动流程
    cinder-volume Required RPC API Old
    Docker swarm 容器流量追踪
    postgres schema访问权限设置
    骑士cms < 6.0.48任意文件包含漏洞简记
    Socket学习
    网络编程
    交换机和路由器的区别
  • 原文地址:https://www.cnblogs.com/jie-fang/p/10293202.html
Copyright © 2011-2022 走看看