zoukankan      html  css  js  c++  java
  • yml文件格式,Ansible-playbook

    https://www.cnblogs.com/yanjieli/p/10969299.html

    https://www.cnblogs.com/joy-sir/p/12164914.html

    playbook: 通过事先编写好 的playbook文件实现批量管理操作      (后缀可以是.yaml或者.yml

     ===============ansible 的任务集

    注意:

    1.yml文件中不可使用tab键

    2.缩进对齐,严格控制缩进

    3.#表注释

    4.---开头

    YAML简介:

    结构:通过空格来展示,使用固定的缩进风格来表示数据层级的结构关系,同一层级缩进必须一致

    1. 数组: 使用-  表示

    2. 键值:使用表示

    3. [] 表数组

    4. {} 表对象

    5. , 表分隔符

    eg: 

    讲师:[                                        

    {name: xx , sex: xx},                   

    {name: xx , sex: xx}                        

    ]

     ================

    讲师:                                        

    -

       {name: xx, sex: xx },                  

    -

       {name: xx ,sex: xx }                       

     

    playbook文件 :是ansible主机用于配置,部署和管理托管主机的剧本,可以让远程主机达到预期状态

    核心元素:

    hosts:ansible托管主机的主机列表

    Tasks:任务集

    variables: 内置变量或自定义变量在playbook中调用

    Templates: 模板,即使用模板语法的文件,比如配置文件,

    Handlers和notify要结合使用,当某条件满足时,触发执行的操作

    tags: 标签,指定某条任务执行

    roles: 角色,就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷的include它们的一种机制

     playbook的运行方式:ansible-playbook -h         //查看帮助

    1.-f 指定并发数 ,默认为5

    ansible-playbook   xx.yml  -f   10

    2.--syntax-check:检查yml文件语法,只检查不执行

    ansible-playbook xx.yml  --syntax-check

    3.-t 指定某个标签执行yml文件

    ansible-playbook   xx.yml   -t   标签名

    4.-v:显示详细信息 -vv,-vvv,-vvvv

    ansible-playbook xx.yml   -v

    ansible-playbook a.yml --list-tasks                            //检查tasks任务
    ansible-playbook a.yml --list-hosts                            //检查生效的主机
    ansible-playbook a.yml --start-at-task='Copy Nginx.conf'      //指定从某个task开始运行

    playbook中变量的使用

    1.命令行指定变量

     ansible-playbook xx.yml -e 'pkg=httpd'

    2.主机与组定义文件定义变量

     

     ansible-playbook xx.yml 

    3.playbook文件中定义变量

     ansible-playbook xx.yml 

     4.利用setup模块获取变量

      ansible-playbook xx.yml 

     5.利用独立的yml文件定义变量

     

     ansible-playbook xx.yml -e kry.yml

    playbook中的标签:

    -t  标签名                 指定标签执行某一任务

    --skip-tags     标签名             选择除了某个标签外全部执行

    playbook中templates模板的使用:

    说明:

    1.大多数情况下都将模板文件放在playbook文件同级的templates目录下(手动创建),这样playbook文件就可以直接引用,不用写入绝对路径,放在其他的地方,注意要通过绝对路径去指定j2模板文件的路径

    2.模板名的后缀:j2

    模板文件的准备:

      模板文件j2中引用了yml文件中的变量listen_port

     

    templates之when

    when:条件判断,当满足某个条件时,触发执行一系列操作

    register: result      保存一个命令的返回状态,result.stdout里面保留了命令的标准输出结果

                     register命名时,不能使用-中横线

    when : result|failed                 当result==failed

               result|success              当result==success

    ignore_errors: True          默认为false,表忽略错误继续执行

    templates之with_items   (标准循环)

    当有需要重复性执行的任务时,可以使用迭代机制去遍历一个字符串或是字典

    列表格式:字符串 、字典

     {{item}}表示with_items里面的一项

    loop循环:

     

    创建用户并且设置密码:

     针对用户名,密码文件加密

    ansible-vault encrypt 密码文件.yml                         加密

    ansible-vault view 密码文件.yml                           查看

    ansible-vault edit 密码文件.yml                           编辑

    ansible-playbook  create_user.yml -e userlist.yml --ask-vault-pass             使用加密的方式创建用户

    templates之for if 

    通过for, if可以灵活的生成配置文件等需求

    for结构:

     

     

    if结构:

  • 相关阅读:
    calendar的用法
    为什么要初始化变量呢
    什么情况下,if()后面的else可以省略不写
    new 对象的时候,括号里有值和无值的区别
    if...else...;if..else if...else
    java-csv导出-导出文件显示的日期格式不正确
    使用Navicat连接MySQL,连接失败(报1064错误)
    MySQL下载安装详解(win10)
    Syntax error, parameterized types are only available if source level is 1.5 or greater
    eclipse ant出错问题
  • 原文地址:https://www.cnblogs.com/krystal-LA-zx/p/13074337.html
Copyright © 2011-2022 走看看