ansible-playbook格式要求、特权升级与任务模块

文章目录

  • 1. playbook简介
    • 1.1 Ansible Playbook与临时命令
    • 1.2 Playbook的格式要求
    • 1.3 运行playbook
    • 1.4 提高playbook输出的详细程度
    • 1.5 --syntax-check语法验证
    • 1.6 -C 执行空运行(演示执行效果 但不会实际执行)
  • 2 实施多个play
    • 2.1 缩写多个play
    • 2.2 play中的远程用户和特权升级
      • 2.2.1 用户属性
      • 2.2.2 特权升级属性
  • 3 查找用于任务的模块
    • 3.1 模块帮助文档
    • 3.2 Playbook语法变化
    • 3.3 过时的“键=值” playbook简写

1. playbook简介

1.1 Ansible Playbook与临时命令

临时命令可以作为一次性命令对一组目标主机运行一项简单的任务。不过,若要真正发挥Ansible的力量,需要了解如何使用playbook以便轻松重复的方式对一组目标主机执行多项复杂的任务。
play是针对清单中选定的主机运行的一组有序任务。playbook是一个文本文件,其中包含由一个或多个按特定顺序运行的play组成的列表。
Play可以将一系列冗长而复杂的手动管理任务转变为可轻松重复的例程,并且具有可预测的成功成果。在playbook中,可以将play内的任务序列保存为人类可读并可立即运行的形式。根据任务的编写方式,任务本身记录了部署应用或基础架构所需的步骤。

1.2 Playbook的格式要求

前面我们学习了临时命令模块,下面以一条命令做为案例来讲解下其在playbook中是如何编写的。

ansible 172.16.103.129 -m user -a 'name=runtime uid=4000 state=present'

这个任务可以将其编写为一个单任务的play并保存在playbook中。生成的playbook如下方所示:

---
- name: Configure important user consistently
  hosts: 172.16.103.129
  task:
    - name: runtime exists with UID 4000
      user:
        name: runtime
        uid: 4000
        state: present

Playbook是以YAML格式编写的文本文件,通常使用扩展名yml保存。

  • YAML语言
    YAML是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。

它类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。

YAML语言的格式如下:

---
house:
  family:
    name: Doe
    parents:
      - John
      - Jane
    children:
      - Paul
      - Mark
      - Simone
  address:
    number: 34
    street: Main Street
    city: Nowheretown
    zipcode: 12345

YAML的基本规则:

  • 使用缩进来表示层级关系,每层2个空格,禁止使用TAB键
  • 当冒号不是处于最后时,冒号后面必须有一个空格
  • 用 - 表示列表,- 的后面必须有一个空格
  • 用 # 表示注释
    Playbook使用空格字符缩进来表示其数据结构。
---
house:
  family:
    name: Doe
    parents:
      - John
      - Jane
    children:
      - Paul
      - Mark
      - Simone
  address:
    number: 34
    street: Main Street
    city: Nowheretown
    zipcode: 12345

YAML缩进的两个基本规则:

  • 处于层次结构中同一级别的数据元素(例如同一列表address中的项目number street)必须具有相同的缩进量。
  • 如果项目属于其他项目的子项,其缩进量必须大于父项(比如number的缩进量大于address)

其他规则

  • 只有空格字符可用于缩进,不允许使用tab键。一般是一级2个空格。
  • Playbook开头的一行由三个破折号(—)组成,其末尾可能使用三个圆点(…)作为文档结束标记,尽管在实践中这通常会省略。

在这两个标记之间,会以一个play列表的形式来定义playbook。YAML列表中的项目以一个破折号加空格开头。
例如,YAML列表可能显示如下:

- apple
- orange
- grape

Play本身是一个键值对集合。同一play中的键应当使用相同的缩进量。
以下示例显示了具有三个键的YAML代码片段。前两个键具有简单的值。
第三个将含有三个项目的列表作为值。

- name: just an example
  hosts: webservers
  tasks:
    - first
    - second
    - third

作为play中的一部分,tasks属性按顺序实际列出要在受管主机上运行的任务。列表中各项任务本身是一个键值对集合。

---
- name: Configure important user consistently
  hosts: 172.16.103.129
  task:
    - name: runtime exists with UID 4000
      user:
   

你可能感兴趣的:(ansible,运维)