美文网首页
playbook详解

playbook详解

作者: 清风徐来_简 | 来源:发表于2019-05-04 23:03 被阅读0次

    一、playbook简介

    • Playbooks是ansible执行任务的另一种完全不同的方式,并且功能特别强大。
      playbooks是真正简单的配置管理和多机器部署系统的基础,并且非常适合部署复杂的应用程序。
    • 官网:playbook官网

    二、playbook基本语法

    • playbook使用yaml语法
      yaml语法讲解:yaml语法讲解
      yaml语法检验:yaml语法检验(网络检测工具,敏感信息不要输入)

    • 样本示例:官网示例

    • 先举个栗子
      nginx.yml

      ---
      - hosts: all
        tasks: 
          - name: Install nginx
            yum: name=nginx state=present
          - name: template nginx.conf
            template: src=./nginx.conf.j2 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,- hosts:后面是主机的组命
      • 3,tasks是任务动作的集合,可以有多个任务
      • 4,name是操作的描述或注释
      • 5,yum是使用yum模块执行,后面跟着一些本模块的参数
      • 6,template是模块,src是源文件(jinja2语法的模板文件以 .j2后缀),dest是生成的目标文件。
      • 7,notify执行需要有触发条件,如果文件改变,则会触发notify执行(和handlers组合使用,name和上面必须一样)
      • 8,service模块,后面是参数
    • 检查yml文件语法是否正确:ansible-playbook nginx.yml --syntax-check

    • 一般都是缩进错误,空格错误。一定要使用空格,不要使用tab键
      A YAML file cannot contain tabs as indentation
      yaml文件不能包含制表符作为缩进

    • 执行:ansible-playbook -i hosts nginx.yml

    三、playbook常用内置词汇说明

    remote_user: root  【远程ssh认证用户】
    sudo: yes          【设置"playbook sudo"操作】
    sudo_user: admin   【设置"playbook sudo"操作】
    gather_facts: no   【设置facts信息收集】
    accelerate: no     【设置accelerate模式(在客户端开启守护进程)】
    accelerate_port: 8088 【设置accelerate端口】
    max_fail_percentage: 30 【设置任务失败比例,超过30%就停止】
    serial: 15 【设置并发数目】
    vars: 
        nginx_port: 80  【设置变量,可通过模板使用变量。】
        
    vars_files: 
        - "vars.yml" 【 变量的文件】
        - ["vars1.yml","vars2.yml"] 【使用列表可传多个文件】
    
    roles: 
        - docker  【角色】
        
    tasks:
        - include:tasks.yml  【引入tasks,也可单独写入任务】
        
    post_tasks: 
        -name: post_taske   【运行之后的tasks】
        
    handles:
        - include:handlers.yml 【由 notify 触发】
    

    四、playbook中的roles角色

    • 官网介绍:roles官网

    • 如果任务多,就可以分别写到不同的角色里。每一个角色再写自己的tasks。这样也好管理。再以roles的方式写入playbook,执行任务。这样在总任务文件中就可以不写tasks了,起到了解耦的作用。

    • 简单示例
      site.yml:统一入口文件
      roles/nginx/tasks/main.yml :角色的入口文件
      site.yml和roles同级目录
      site.yml中:

      ---
      - hosts: ceshi
      gather_facts: no
      
      roles:
        - nginx 
      

      main.yml中:

      ---
      - name: install nginx
        yum: name=nginx state=present
      - name: start service nginx
        service: name=nginx state=restarted
      

      执行:ansible-playbook -i hosts site.yml

    五、playbook变量与引用

    • 官网:variables官网

    • (1)、在主机清单里定义变量

      [ceshi:vars]
      key=value 
      
    • (2)、在playbook中定义变量

      vars:
          key:value
      
    • (3)、在命令行使用变量使用

      -e "key=value"
      
    • (4)、在文件中定义并引用
      vars.yml

      ---
      key1: value1
      key2: value2
      

      playbook中

      vars_files: 
          - "vars.yml" 
      

    未完待续。。。

    相关文章

      网友评论

          本文标题:playbook详解

          本文链接:https://www.haomeiwen.com/subject/cokqoqtx.html