• Ansible用法playbook


    playbook文件

    hello.yml
    ---
    - name: test_tasks  【各个任务的总描述】
       hosts: webserver
       remote_user: root
      gather_facts: no
    
       tasks:
        - name: test1              【单个任务的描述】【一个- name里只能有一个模块的任务】
          command: hostname
        - name: test2               【单个任务的描述】
          command: ls /root
    1、文件后缀名为.yml或.yaml【因为是用yaml语言编写】
    2、文件开头以---标记【习惯而已,为了标准化】
    在第一行也可加yaml解释器:#!/usr/bin/ansible-playbook;执行脚本时 ./test/yml;可省去ansibile-playbook test.yml
    3、文件内容有严格的缩进控制
    4、hosts: webserver 【后面有空格,冒号后面有空格】
    5、remote_user: root 【表示执行任务的用户:root】
    6、tasks:空一行,为了规范
    7、gather_facts: no设置为No,表示运行playbook脚本不做采集主机的真相信息,可以更快速执行脚本
    8、关键词都是冒号结尾的
    

      

    ansible-vault

    ansible-vault工具功能,管理加密解密playbook文件
    1、ansible-vault [create | decrypt |encrypt| edit | rekey | view]
    2、ansible-vault encrypt hello.yml 【加密】
    3、ansible-vault decrypt hello.yml 【解密】
    4、ansible-vault create hello.yml  【创建】
    5、ansible-vault edit hello.yml     【编辑】
    6、ansible-vault rekey hello.yml  【修改口令】
    7、ansible-vault view hello.yml   【查看】

    ansible-console

    ansible-console工具,是一个交互式工具
    1、直接输入ansible-console
    2、root@all (2)[f:5]$  【root表示用户,all表示主机清单的所有主机,(2)表示主机清单有2台主机,[f:5]表示可并发执行5台主机】
    3、root@all (2)[f:5]$ cd webserver   【进入到webserver主机组下】;cd 192.168.1.14 【进入到指定某个主机下】
    4、root@all (2)[f:5]$ command hostname 【模块名+命令,即可直接执行】

    palybook介绍

    playbook是由一个或多个"play"组成的列表。
    play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是
    调用ansible的一个module;将多个play组织在一个playbook中,可以连同所有的play执行。
    playbook采用YMAL 语言编写。

    palybook核心元素

    1、hosts 执行的远程主机列表
    2、tasks 任务集
    3、variables 内置变量或自定义变量在playbook中调用
    4、templates 模板,可替换模板文件中的变量并实现一些简单逻辑的文件
    5、handlers 和notity 必须结合使用,由特定的条件触发操作,notity通知>handlers执行
    6、tags 标签 对某条任务名个别名,用于指定某条具体的任务执行:
          ansible-playbook -t tagsname fiel.yml 【指定tagsname此标签执行任务】

    YAML语法简介

    1、在单一脚本中,可以连续三个字号---区分
    2、次行开始正常些playbook的内容,一般建议写明该playbook的功能【即标记name:】
    3、使用#号注释
    4、缩进必须是同一的,不能空格和tab混用
    5、缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进和换行来实现的
    6、YAML文件内容和linux系统大小写判断方式一致,区别大小写
    7、k/v值可同一行写也可换行写,同一行使用:分隔,换行写使用-
    8、v可以是一个字符串,也可是另一个列表
    9、一个完整的代码块功能需最少元素包括 name 、tasks
    10、一个name只能包括一个task
    11、YAML文件扩展名通常为yml或yaml
    - name: **
      hosts: **
      remote_user: **
      
      tasks:
        - name: **
          module: **
    注意:所有和上一行的缩进必须保持相同的缩进量,如空格两个,则所有的以下的都必须是空格两个
    

      

    playbook基础组件

     tasks:
        - name: test1              
          command: hostname
    1、如上,任务的模块名为shell或command时,后面直接跟命令,而非key=value形式
    2、如果命令或脚本退出码不为0即执行出错了,可以使用如下代替:
     tasks:
        - name: test1              
          command: command1 || command2
     或者使用ignore_errors来忽略错误信息:
     tasks:
        - name: test1              
          command: command1
          ignore_errors: True
    

      

    运行playbook

    1、运行方式:
    ansible-playbook [filename.yml]  [options]
    常见options:
        --check 只检测脚本语法,但不真正执行操作, -C 代替别名ansible-playbook [filename.yml] -C
        --list-hosts 列出运行任务的主机
        --limit hosts  只针对主机列表中的主机执行
        -v 显示过程 -vv -vvv更详细过程
        
    2、举例:
    ansible-playbook file.yml --check [或-C]
    ansible-playbook file.yml --list-hosts
    ansible-playbook file.yml --limit webserver
    ansible-playbook file.yml -v [或-vv] [或-vvv]
    
    3、ansible-playbook的新增功能参数:
    --ask-vault-pass:   加密playbook文件时提示输入密码
    -D :                即--diff:当更新的文件数及内容较少时,该选项可显示这些文件不同的地方,该选项结合-C用会有较好的效果
    -e :                 -e var1=value1 在Playbook中引入外部变量
    --flush-cache:       将清除fact到的远程主机缓存
    --force-handlers:    强制运行handlers的任务,即使在任务失败的情况下
    -i :                 -i inventory/init 指定要读取的主机清单文件init
    --list-tags:         列出所有可用的tags
    --list-tasks:        列出所有即将被执行的任务。
    --skip-tags:         跳过指定的tags任务。
    --start-at-task:     从第几条任务开始执行。
    --step:              逐步执行Playbook定义的任务,并经人工确认后继续执行下一步任务。
    --syntax-check:      检查Playbook中的语法书写。
    -t TAGS, --tags=TAGS:指定执行该tags的任务
  • 相关阅读:
    函数防抖和节流
    浅析事件循环(Event Loop)
    Flutter的盒子约束
    如何在Flutter中使用flutter_markdown
    关于Salesforce的15位ID与18位ID
    Salesforce的Rollback与SavePoint
    Salesforce的TestClass
    Salesforce的SplashPage(启动页)-一天一个标准功能系列
    Salesforce用Apex判断Role Hierarchy的简单代码示例
    Salesforce不登录调用Webservice的方法
  • 原文地址:https://www.cnblogs.com/lizhewei/p/11700253.html
Copyright © 2020-2023  润新知