ansible playbook组件1

  1. playbook基本语法
    html

    YAML语法介绍:http://www.yaml.org/spec/1.2/spec.html#Syntaxnginx

    wKioL1muT3ugzcLVAAA4SV5aLlI822.png-wh_50

    第一行:表示该文件是YAML文件,非必须shell

    第二行:定义该YAML针对的目标主机,all是全部,也能够是单个或者组服务器

    第三行:定义tasks集合,上面图片中就有3个taskide

    第四行:定义task名称,非必须,建议根据task实际任务命名命令行

    第五行:定义一个状态action, 例如上面就是用yum安装nginxdebug

    第6-9行:使用template模板管理文件,validate参数指文件生成后使用后面命令作nginx语法验证;notify是触发handlers,若是同步后文件MD5有变化会触发restart nginx service 这个handler.rest

    第10-12行:定义一个handler状态让nginx服务重启htm

    问题:注意格式,不然会报错:ERROR! Syntax Error while loading YAML.blog

    使用--syntax-check参数检查语法:

    $ansible-playbook nginx.yaml --syntax-check

    playbook: nginx.yaml

    $ansible-playbook nginx.yaml --list-task   #列出task任务名称

    playbook: nginx.yaml

     play #1 (all): all TAGS: []

      tasks:

        Install Nginx Package TAGS: []

        Copy Nginx.conf TAGS: []

    $ansible-playbook nginx.yaml --list-hosts #列出针对的主机

    #ansible-playbook -i nginx nginx.yaml -f 3  #执行脚本,根据返回结果来判断

    PLAY RECAP **************************************************************

    192.168.1.2    : ok=4    changed=3    unreachable=0    failed=0

    #能够经过命令查看各服务器nginx端口

    若是有修改nginx.conf,只须要运行命令

    #ansible-playbook -i nginx /etc/ansible/role/nginx/nginx.yaml -f 3 --start-at-task='Copy Nginx.conf'

    ####################################################################################################################

    若是须要修改的比较复杂建议采用多目录方式,看的比较清楚,出错方便查询

    blob.png

    blob.pngblob.png

    ####################################################################################################################

  2. playbook支持交互式执行task,能够指定--step参数

    ansible-playbook test nginx.yaml -f 3 --start-at-task='Copy Nginx.conf'

  3. playbook变量与引用

    1)定义全局变量:在定义主机组的时候进行定义;若是单台主机和主机组定义的变量名称相同,单台主机变量会生效

    2)经过ansible-playbook 命令行传入 ansible-playbook test.yaml -e "key=KEYTEST"

       支持传多个变量以及指定文件方式传入变量,变量文件支持YAML和JSON格式

    3)参数自定义

    blob.pngblob.png

    4)在playbook文件内使用vars_files

    将变量定义到某个文件中,而后再去引用这个文件

    blob.png

    blob.png

    5)使用register内的变量

    说明:例如2个tasks,其中第二个task是否执行须要判断第一个task运行后的结果,这个时候就须要在task之间传递数据了

    variable.yaml:

    ---

       - hosts: test

         gather_facts: no

         tasks:

            - name: register variable

              shell: hostname

              register: info

            - name: diplay Variable

              debug: msg="The variable is {{ info }}"

    #ansible-playbook variable.yaml

    6)使用vars_prompt传入

    说明:经过交互式的方式给定义好的参数传入变量值

    promp.yaml

    blob.pngblob.png

相关文章
相关标签/搜索