————————————————

Ansible Playbook剧本

Ad-hoc模式的缺点
每一条ansible命令只能对被管理主机执行一个ansible模块
如果一个运维任务包含了大量相关的运维操作,比如对一个服务的运维,涉及了服务的安装、配置、日志文件收集等等操作,通过敲ansible命令的方式实现,就太繁琐了

Ansible Playbook模式
将相关运维操作集合在一个playbook文件中,通过执行playbook文件,可以快速完成运维操作
ansible playbook文件就相当于一个脚本,将运维相关的各类操作组合在一起;playbook还可以通过循环、条件判断等功能实现更为灵活的运维逻辑

一、Playbook语法
1、Playbook文件以.yml为后缀名
YAML语法

文件开头第一行,必须是- - -,即三条横线
YAML语法中,“-”用于定义一个列表,列表中的元素是并列关系

注意:写yaml格式文件缩进不要用tab键,统一采用空格进行缩进

2、Playbook由一到多个Play组成;每一Play定义了相关的一组运维任务
1)、Play的组成

由各类键值对(key-value pair)组成
对哪些被管理主机进行操作——hosts键值对
对被管理主机执行的任务列表——tasks键值对

2)、hosts键值对的定义
hosts:主机组名/主机名/主机IP地址

3)、tasks键值对的定义

tasks:
          任务列表

4)、任务的定义
指定该任务所要执行的模块及其参数
方式1:

- name: 任务的描述性信息(可选,但推荐使用)
  模块名:  参数1=值1   参数2=值2  … 参数n=值n

方式2:

- name: 任务的描述性信息
  模块名: 
      参数1: 值1
      参数2: 值2  
      … 
      参数n: 值n

eg:
vim ./test.yaml

---
-  hosts: group1
    tasks:
      - name: install db
        dnf: name=mysql state=present
-  hosts: group1
    tasks:
      - name: copy file
        copy: src=/root/test.txt  dest=/tmp/test.txt

二、Playbook的执行
ansible-playbook playbook文件路径 [-i 主机清单文件]

默认按照playbook中的play的顺序,以及play中任务的顺序,自上而下顺序执行
默认情况下,只有当某一任务在所有被管理主机上都执行完毕后,才会执行下一任务
默认情况下,当某一任务在某台被管理主机上执行失败时,会造成该主机后续任务执行的中断
默认情况下,ansible会同时在5台被管理主机上执行同一任务,可以设置任务并行执行的主机数量,以加快运维进度

显示Playbook任务执行的细节
ansible-playbook -v

Playbook中任务执行情况返回值

ok
任务执行成功,但任务模块的执行没有对主机产生修改
changed
任务执行成功,任务模块的执行对主机产生了修改
failed
任务执行失败
skipped
任务被跳过

Playbook语法检查
ansible-playbook --syntax-check

Playbook测试运行
ansible-playbook -C

Playbook先测试再运行(推荐)

ansible-playbook  playbook文件路径  -C
ansible-playbook  playbook文件路径

eg:

ansible-playbook test.yaml -C #测试运行
ansible-playbook test.yaml  #实际运行

Playbook的幂等性
如果对被管理主机重复执行playbook,并不会对被管理主机造成负面影响,则称该playbook具有幂等性

posted @ 2022-11-19 11:16  Tjane'Blogs  阅读(161)  评论(0)    收藏  举报