Ansible的playbook编写和运行示例介绍

目录

一.yaml语法格式

1.定义:

2.yaml支持几种数据类型

(1)纯量:

(2)对象

(3)数组

3.playbook-yaml书写的注意事项

二.playbook编写和运行

1.单个简单playbook示例

(1)进行语法检查

(2)执行playbook

(3)通过添加参数输出playbook执行后详细信息

2.多playbook示例


一.yaml语法格式

1.定义:

yaml是类似于xml,json的标记性语言,强调以数据为中心,ansible的playbook的编写主要遵守yaml语法格式

2.yaml支持几种数据类型

(1)纯量:

一个简单的值,字符串、布尔值、整型数,浮点型数,时间(yyyy-MM-dd格式)等

(2)对象

键值对集合,字典

复制代码
#推荐第一种形式,以"键: 值"表示键值对
a:
  age: 20
  address: sichuan
#第二种形式逐渐减少使用
a: {age: 20,address: sichuan}

(3)数组

一组按次序排列值,序列/列表

复制代码
#推荐第一种形式,以多个"-"表示列表
name:
  - a
  - b
#第二种形式逐渐减少使用
address: [a,b]

3.playbook-yaml书写的注意事项

(1)在":"后需要加一个空格

(2)同一级别的元素应该有相同的缩进量,子元素的缩进量要大于父元素缩进量

复制代码
---                 #playbook开头以"---"标记
- name: create file   #最开头的name表示对整个yaml任务的描述
  hosts: servera     #对哪些受管节点执行
  tasks:               #要执行的任务,tasks,hosts属于同级元素,书写相同缩进量
    - name: ......      #该任务的描述,此处name属于tasks的子元素,缩进量应多于tasks的缩进量
      file:               
      #执行任务用到的模块,在使用模块时推荐参照"ansible-doc 模块名"结果中的EXAMPLES例子进行书写
        name:......       #,模块用到的其他选项等
        ......

(3)yaml的缩进建议两个空格,尽量不使用tab键,如果使用tab键可以更改tab的空格量设置,指定针对yaml文件类型生效,缩进量为2

复制代码
[student@workstation ~]$ vim ~/.vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et   

(4)有多行字符串内容时,可以使用"|"或">"来表示换行

二.playbook编写和运行

1.单个简单playbook示例

参照"ansible-doc yum"的EXAMPLES编写

复制代码
[student@workstation ~]$ cat httpd.yaml
---    #开头标识
- name: install http   #描述
  hosts: webservers   #对webservers组内主机执行
  tasks:    #需要执行的任务
    - name: install
      yum:    #使用yum模块
        name: httpd   #包名
        state: present   #操作为present安装

(1)进行语法检查

语法检查不算绝对精准,错误一般存在报错点附近,且部分单词拼写错误不会进行检查

复制代码
[student@workstation ~]$ ansible-playbook httpd.yaml --syntax-check
​
playbook: httpd.yaml

(2)执行playbook

复制代码
[student@workstation ~]$ ansible-playbook httpd.yaml
#执行成功
PLAY [install http] *********************************************************************************************************************************************************************
​
TASK [Gathering Facts] ******************************************************************************************************************************************************************
ok: [servera]
ok: [serverb]
​
TASK [install] **************************************************************************************************************************************************************************
ok: [serverb]
ok: [servera]
​
PLAY RECAP ******************************************************************************************************************************************************************************
servera                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
serverb                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
​
[student@workstation ~]$ ansible-playbook httpd.yaml -C
#执行空运行检查模式,不会对受管节点的配置实际更改

(3)通过添加参数输出playbook执行后详细信息

复制代码
[student@workstation ~]$ ansible-playbook httpd.yaml -v/-vv/-vvv/-vvvvv
参数 功能
-v 显示任务结果
-vv 显示任务结果和配置
-vvv 显示受管主机连接信息等
-vvvv 更加详细显示连接插件、执行脚本用户和脚本等信息

2.多playbook示例

复制代码
---
- name: install php mariadb
  hosts: servera
  tasks:
    - name: install them
      yum:
        name: "{{packages}}"          #引用变量
      vars:                          #创建packages变量,列表中值为php和mariadb
        packages: 
          - php
          - mariadb
- name: install development tools
  hosts: serverb
  tasks:
    - name: install them
      yum:
        name: "@Development tools"         #参照EXAMPLES写法安装扩展包
        state: present
- name: update all                 #更新所有包
  hosts: webservers
  tasks:
    - name: update them
      yum:
        name: '*'
        state: latest
相关推荐
doubt。3 小时前
大模型prompt工程Zero-Shot与Few-Shot以及json格式
人工智能·深度学习·机器学习·语言模型·json·prompt
烟锁池塘柳01 天前
Conda 创建环境报错:Unable to read repodata JSON file,清华源 pkgs/free 失效解决方法
json·conda
云水一下2 天前
零基础玩转bWAPP靶场(四十五):XSS - Reflected (JSON)
web安全·json·xss·bwapp·reflected
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ3 天前
Spring‑AI Document 对象 JSON 字段详解
人工智能·spring·json
sunywz3 天前
【从零搭建物联网智能充电桩系统】2、自定义二进制协议:设备为什么不用 JSON?
python·物联网·json
灵析表格3 天前
灵析表格手机号处理函数深度分析报告
前端·网络·json·wps·灵析表格·excel公式盒子
微微1笑抽了筋3 天前
xml中设置透明度
xml
猿长大人4 天前
C# | JSON 序列化中的多态接口处理:基于 Attribute 实现精准 $type 控制
c#·json
Source.Liu4 天前
【Uppsala】入口模块(lib.rs)
xml·rust
消失的旧时光-19434 天前
第六篇:Redis Hash——一个用户对象应该保存成 JSON,还是保存成 Hash?
redis·json·哈希算法