Playbook 介绍

1. Playbook 

        Playbook 是ansible管理配置、部署应用和编排的语言,可以使用playbook 来描述你想在远程主机执行的策略或者执行的一组步骤的过程等。Playbook 采用的YAML语法结构。


2. Playbook 组成
  目标部分(Target section):定义将要执行的playbook的远程主机组
      hosts: 定义远程的主机组
      user: 执行该任务组的用户
      remote_user: 与user相同
      sudo : 如果设置为yes,执行该任务组的用户在执行任务的时候,获取root权限
      sudo_user: 如果设置user为tom,sudo为yes,sudo_user为jerry,则tom用户则会获取jerry用户的权限
      connection:通过什么方式连接到远程主机,默认为ssh
      
  变量部分(Variable section):定义Playbook运行时需要使用的变量
      vars:定义变量
      vars_files: 在其它文件中定义变量
      vars_prompt: playbook 执行时,手动输入变量的值。private为yes时隐藏输入字符
              vars_prompt:
               - name: http
                 prompt:'please enter something'
                 private:yes
      setup种变量的调用,与python中字典、列表调用类似,如
          {{ansible_devices.sda.paritions.sda2.size}}
          {{ansible_mounts[0].mount}}
      register: 将执行结果保存为变量,供后续处理
  
  任务部分(Task section):定义将要在远程主机上执行的任务列表
      - name: install apache
        yum:
          name: httpd
          state: present
      - name: restart apache
        service:
            name: httpd
            state: started
            
  管理部分(Handler section):定义task执行完成后需要调用的任务
      handlers:
          所有tasks都执行完,才会执行handlers
          需要调用才会执行handlers
  
3. Playbook roles
    它允许根据定义的格式对⽂件进⾏分组,从本质上来讲,它是⼀个具有⼀些⾃动化功能的包含。⻆⾊允许将变量、⽂件、任务、模板、Handlers放到⼀个⽂件夹中,然后包含他们。在建⽴好⼀个有效的依赖关系之后,还可以在⼀个⻆⾊中包含另外⼀个⻆⾊。和包含⼀样,可以传递变量给⻆⾊。

        site.yml ⽂件,roles使⽤示例

4. Playbooks中的循环
        1)标准循环 with_items
        2)嵌套循环 with_nested
        3)遍历字典 with_dict
        4)使⽤ with_fifileglob 遍历⽂件 ( 不递归、对⽬录⽆效 )with_fifileglob
        5)使⽤ with_together 来并⾏遍历两个列表
        6)循环⼦元素 with_subelements
        7)在序列中循环 with_sequence
        8)随机选择 with_random_choice
        9) until 循环 until
        10)第⼀次匹配 完成 with_fifirst_found
        11)打印列表索引 with_indexed_items {{item.0}} 表示列表索引 ,{{item.1}} 表示列表对象
        12)整合列表 with_flflattened

 

5. Playbooks中的条件判断

        1)在 when 后⾯使⽤ Jinja2 表达式: when: ansible_os_family == "Redhat"
        2) Jinja2 过滤器同样可以再 when 中使⽤: when: result | failed
        3) when 与布尔值⼀起使⽤做条件判断: when: not epic
        4)使⽤ defifined 来判断: when: bar is not defifined
        5) when 结合 with_items 使⽤: with_items: [ 0, 2, 4, 6, 8, 10 ] when: item > 5
        6)通过⾃定义的 facts 判断: when: fact_system == '1234'
        7)在 roles includes 中使⽤ when
        8)引⼊条件变量: - [ "vars/{{ ansible_os_family }}.yml", "vars/os_defaults.yml" ]
        9)基于变量选择⽂件和模板
6. Playbooks获取变量的⽅法
        1)定义在 Ansible 中的 hosts 和 groups 变量中
        2)在 playbook 中指定
        3)任意指定变量⽂件
        4)交互⽅式获取变量值
        5)获取 setup 模块的变量
7.  Playbooks 中的变量的优先级
        1) extra vars( 命令⾏中 -e) 最优先
        2) inventory 主机清单中连接变量 (ansible_ssh_user )
        3) play vars vars_fifiles
        4)剩余的在 inventory 中定义的变量
        5)系统的 facts 变量
        6)⻆⾊定义的默认变量 (roles/rolesname/defaults/main.yml)
        原则:⼦组会覆盖⽗组, 主机总是覆盖组定义的变量
8.  Ansible 调试⽅法
        • 语法检查: ansible-playbook --syntax-check playbook.yml
        • 列出主机: ansible-playbook --list-hosts playbook.yml
        • 列出任务: ansible-playbook --list-tasks playbook.yml
        • 检查模式: ansible-playbook --check playbook.yml
        • 查看差异内容: ansible-playbook --diff --check playbook.yml
        • 分步执⾏: ansible-playbook --step playbook.yml
        • 从指定 task 开始执⾏: ansible-playbook --start-at-task="install packages"  playbook.yml
        • 使⽤ tags
                A. ansible-playbook -t foo,bar playbook.yml
                B. ansible-playbook --tags=foo,bar playbook.yml
                C. ansible-playbook --skip-tags=baz,quux playbook.yml
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值