二、Ansible剧本、变量、Vault

本文详细介绍了Ansible的剧本(Playbook)概念、Yaml语法、编写多play多任务剧本的方法,深入探讨了Ansible变量的使用,包括全局、play、主机范围以及如何在playbook和外部文件中定义变量。此外,还讲解了Ansible Vault的用法,如创建、查看、编辑加密文件,以及在执行playbook时如何处理加密数据。
摘要由CSDN通过智能技术生成

一、Playbook

1. Ansible playbook和临时命令

  • 临时命令可以作为一次性命令对一组目标主机运行一项简单的任务
  • play是针对清单中选定的主机运行的一组有序任务。playbook是一个文本文件,其中包含由一个或多个按特定顺序运行的play组成的列表

2. playbook介绍

  • .yml结尾的yaml格式的文件,不可以使用tab,建议使用2个空格

  • 每个playbook是由若干play组成,每个大多play由三个键值对组成:namehoststasks

  • Playbook开头一行由三个破折号组成---。一般来说以三个点结尾(实际往往省略)

  • 示例:下面将一条临时命令转换为playbook

    • 临时命令:ansible servera -m user -a 'name=zhangsan uid=4000 state=present'
    • playbook:
      • 前两个键具有简单的值。第三个将一个多行列表作为值
    # vim createUser.yml
    ---
    - name: Configure important user consistently
      hosts: servera
      tasks:
        - name: zhangsan exists with UID 4000
          user: 
            name: zhangsan
            uid: 4000
            state: present
            
     # ansible-playbook createUser.yml -v
    

3. Yaml的语法格式

  • 基本语法

    • 大小写敏感

    • 使用缩进表示层级关系,处与层次结构中同一级别的数据元素(例如同一列表中的项目〉必须具有相同的缩进量

    • 缩进不允许使用tab,只允许空格

    • 缩进的空格数不重要,只要相同层级的元素左对齐即可

    • '#'表示注释

  • 数据类型

    • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
    • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)。以 - 开头的行表示构成一个数组中的元素
    • 纯量(scalars):单个的、不可再分的值
    • 这里学过python的应该很容易理解这部分,字典和列表的概念几乎一致
  • 字符串

    • YAML中的字符串通常不需要放在引号里,即使字符串中包含空格。字符串也可以用双引号或单引号括起。
    • 编写多行字符串有两种方式
      • 可以使用竖线字符|表示要保留字符串中的换行字符
      • 要编写多行字符串,您也可以使用大于号>字符来表示换行字符转换成空格并且行内的引导空白将被删除。这种方法通常用于将很长的字符串在空格字符处断行,使它们跨占多行来提高可读性。(人话就是显示的时候不换号)
  • 字典的两种表示形式

name: svcrole
svcservice: httpd
svcport: 80

{
   name: svcrole, svcservice: httpd, svcport: 80}
  • 列表的两种表示形式

    • 使用普通单破折号编写的列表
    • 写在单行
    hosts:
      - servera
      - serverb
      - serverc
      
    hosts: [servera, serverb, serverc]
    

4. 编写多play多任务剧本

  • ---:三个破折号组成的一行添加到文件的开头,以注明这是YAML文件的开头

  • - name:给此play定义一个名称

  • hosts:空两格与name对其,注明受管主机

  • become: yes:空两格与name对其,表示启用特权升级,也可在配置文件中设置

  • tasks:空两格与name对其,定义任务列表

    • - name:定义此任务的名称
    • 模块名:与上面的name对齐,表明使用哪个模块
      • 模块参数:缩进2格,用法同临时命令
    • - name:定义第二个任务…同上,以此类推
  • - name:定义第二个play…同上,以此类推


示例:

---
- name: install pkgs
  hosts: dev,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值