• Ansible playbook详解


    playbook是ansible用于配置,部署,和被管理被控节点的剧本

    playbook常用的YMAL格式:(文件名称以  .yml结尾)

    1、文件的第一行应该以 "---" (三个连字符)开始,表明YMAL文件的开始。   

    2、在同一行中,#之后的内容表示注释,类似于shell,python和ruby。   

    3、YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。   

    4、同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。   

    5、play中hosts,variables,roles,tasks等对象的表示方法都是键值中间以":"分隔表示,":"后面还要增加一个空格。

    playbook由三个部分组成:

    host部分:使用host指示使用哪个主机或主机组来运行下面的tasks

    remote_user:指定远程主机中的哪个用户来登录远端系统,在远端系统执行tasks的用户

    tasks:指定远端主机将要执行的一系列动作,tasks的核心为ansible的模块

     playbook的核心元素:

    hosts:主机组;

    tasks:任务列表

    variables:变量,设置方式有四种

    Templates:包含了模板语法的文本文件

    Handlers:由特点条件触发的任务

    1. [root@server ansible]# vim nginx.yml
    2. ---
    3. - hosts: web
    4. remote_user: root
    5. tasks:
    6. - name: install nginx
    7. yum: name=nginx state=present
    8. - name: copy nginx.conf
    9. copy: src=/tmp/nginx.conf dest=/etc/nginx/nginx.conf backup=yes
    10. notify: reload    #当nginx.conf发生改变时,通知给相应的handlers
    11. tags: reloadnginx   #打标签
    12. - name: start nginx service
    13. service: name=nginx state=started
    14. tags: startnginx   #打标签
    15. handlers:  #注意,前面没有-,是两个空格
    16. - name: reload
    17. service: name=nginx state=restarted  #为了在进程中能看出来

     运行前的三部曲

    检查错误:ansible-playbook  nginx.yml  --syntax-check

    列出所有任务:ansible-playbook  nginx.yml  --list-task

    列出在那些机器执行:ansible-playbook  nginx.yml  --list-hosts

    运行:ansible-playbook  nginx.yml

     variables部分(vars为调用定义变量)

    1.facts:可直接调用

    setup模块就是通过facts组件来实现的,用setup模块获取,直接放入剧本中调用即可

    2.用户自定义变量

    vars :

        - var1: cc1

        - var2: cc2 

       1.如果未在剧本中定义变量可以使用 ansible-playbook nginx.yml  -e  rpmname=keepalived

        2.修改剧本定义

     模板 templates

    模板支持:

    字符串:使用单引号或双引号;
      数字:整数,浮点数;
      列表:[item1, item2, ...]
      元组:(item1, item2, ...)
      字典:{key1:value1, key2:value2, ...}
      布尔型:true/false
      算术运算:
        +, -, *, /, //, %, **
      比较操作:
        ==, !=, >, >=, <, <=
      逻辑运算:
        and, or, not

    修改剧本:  修改剧本来定义变量 

    此处的rpmname代表的调用的文件名称为rpmname,下面的nginxport为此文件中的变量模块。copy模块也需要修改为template模块。

     字典

    - name: install some packages
      yum: name={{ item }} state=present
      with_items:
        - nginx
        - memcached
        - php-fpm

    传入多个参数
    - name: add some groups
      group: name={{ item }} state=present
      with_items:
        - group11
        - group12
        - group13
    - name: add some users
      user: name={{ item.name }} group={{ item.group }} state=present
      with_items:
        - { name: 'user11', group: 'group11' }
        - { name: 'user12', group: 'group12' }
        - { name: 'user13', group: 'group13' }

    相当于一个一个传参给定义的相应接收的位置

  • 相关阅读:
    Ocelot:.NET开源API网关提供路由管理、服务发现、鉴权限流等功能
    无界共创,明道云参与广汽本田IT新技术展
    屡获大奖的界面控件开发包DevExpress v22.1官宣发布
    java计算机毕业设计疫情下发热门诊管理系统MyBatis+系统+LW文档+源码+调试部署
    使用C语言实现循环单链表(带头节点)
    K8s ingress-controller中nginx文件上传大小的限制
    实验十四:雨滴传感器实验
    《定时执行专家》日志的解决方案 —— 关于wxLog的使用,附详细代码
    还是得从代码角度看yolov5(1)
    【Linux kernel基础】arch_initcall到底是怎么是一回事
  • 原文地址:https://blog.csdn.net/weixin_66519301/article/details/134385764