Linux九阴真经之九阴白骨爪残卷5(ansible用法二之Playbook和YAML语法)

playbook是由一个或多个“play”组成的列表

play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的module。将多个play组织在一个playbook中,即可让他们联通起来按事先编排的机制运行。

Playbook 采用yaml 语言编写每一个ansible 的 playbook 都是一个yaml格式的文件,因此要学习编写剧本(playbook), 我们先来了解 yaml 语法的基本用法

一、YAML介绍

YAML 是一个可读性高的用阿里表达资料序列的格式。YAML参考了其他多种语言,包括:XML、

C语言、Python、Perl以及电子邮件格式RFC2822等。Clark Evans在2001年在首次发表了这种

语言,另外Ingy d?t Net与Oren Ben-Kiki也是这语言的共同设计者

二、特性

YAML的可读性好

YAML和脚本语言的交互性好

YAML使用实现语言的数据类型

YAML有一个一致的信息模型

YAML易于实现

YAML可以基于流来处理

YAML表达能力强,扩展性好

YAML语法格式:

1.在单一档案中,可用连续三个连字号(——)区分多个档案。另外,还有选择性的连续三个点号

( … )用来表示档案结尾

2.次行开始正常写Playbook的内容,一般建议写明该Playbook的功能

3.使用#号注释代码

4.缩进必须是统一的,不能空格和tab混用

5.缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结

合换行来实现的

6.YAML文件内容和Linux系统大小写判断方式保持一致,是区别大小写的,k/v的值均需大小写敏感

7.k/v的值可同行写也可换行写。同行使用:分隔

8.v可是个字符串,也可是另一个列表

9.一个完整的代码块功能需最少元素需包括 name: task

10.一个name只能包括一个task

11.YAML文件扩展名通常为yml或yaml

YAML语法简介:

[列表]

List:列表,其所有元素均使用“-”打头

示例:

# A list of tasty fruits

– Apple

– Orange

– Strawberry

– Mango

[字典]

Dictionary:字典,通常由多个key与value构成

示例:

# An employee record

name: Example Developer

job: Developer

skill: Elite

也可以将key:value放置于{}中进行表示,用,分隔多个key:value

示例:

# An employee record

{name: Example Developer, job: Developer, skill: Elite}

三、剧本 playbook

Playbook核心元素:

Hosts:执行的远程主机列表

Tasks:任务列表

Varniables:内置变量或自定义变量在playbook中调用

Templates:模板,可替换模板文件中的变量并实现一些简单逻辑的文件

Handlers:和notify结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行

tags:标签,指定某条任务执行,用于选择运行playbook中的部分代码。ansible具有幂等性。因此

会自动跳过没有变化的部分。此时,如果确信其没有变化,就可以通过tags跳过此些代码片段

Hosts:

作用:playbook中的每一个play的目的都是为了让某个或某些主机以某个指定的用户

身份执行任务。hosts用于指定要执行指定任务的主机,须事先定义在主机清单中

可以是如下形式:

one.example.com

one.example.com:two.example.com

192.168.1.50

192.168.1.*

websrvs:dbsrvs               两个组的并集

websrvs:&dbsrvs             两个组的交集

webservers:!dbsrvs         在websrvs组,但不在dbsrvs组

示例:

– hosts: websrvs:dbsrvs

remote_user

作用:可用于Host和task中。也可以通过指定其通过sudo的方式在远程主机上执行任务,

其可用于play全局或某任务;此外,甚至可以在sudo时使用sudo_user指定sudo时切换的

用户

– hosts: websrvs

remote_user: root

tasks:

– name: test connection

ping:

remote_user: magedu

sudo: yes 默认sudo为root

sudo_user:wang sudo为wang

tasks:

作用:任务列表

格式:module: arguments

注意:shell和command模块后面跟命令,而非key=value

检查playbook:

ansible-playbook -C file.yml

运行playbook的方式:

    ansible-playbook <filrname.yml> …[options]

    options:

–check                      只检测可能会发生的改变,但不真正的操作

–list-hosts                列出运行任务的主机

–limit       主机列表       只针对主机列表中的主机执行

-v,-vv,-vvv                 显示详细过程

一个最简单的Playbook需包含的基础组件有host、remote_user、tasks

示例1:

vim http.yml

– hosts: websrvs

remote_user: root

tasks:

– name: create new file

file: name=/data/newfile state=touch

– name: create new file

user: name=test2 system=yes shell=/sbin/nologin

– name: install package

yum: name=httpd

– name: copy index

copy: src=/var/www/html/index.html dest=/var/www/html/

– name: start service

service: name=httpd state=started enabled=yes

例: 创建一个简单的剧本并执行

[[email protected] ansible]#vim haha.yml 

tags标签

task任务也可以通过”tags”打标签,而后可在ansible-playbook命令上使用-t指定进行调用

示例2:使用tags

vim http.yml

– host: websrvs

remote_user: root

tasks:

– name: install httpd package

yum: name=httpd

tags: inshttpd

– name: copy conf file

copy: src=files/httpd.conf dest=/etc/httpd/conf/  backup=yes

tags: cphttpd

– name: start service

service: name=httpd state=startd enable=yes

tags: rshttpd

ansible-playbook -t rshttpd httpd.yml            单独执行rshttp

原文地址:https://www.cnblogs.com/huxiaojun/p/9124068.html

时间: 2024-08-29 16:44:01

Linux九阴真经之九阴白骨爪残卷5(ansible用法二之Playbook和YAML语法)的相关文章

Linux九阴真经之九阴白骨爪残卷2(SSH)

SSH ssh:安全的远程登录 两种方式的用户登录认证 基于passwork 基于key 客户端 常见的客户端工具有:Windows版的putty.securecrt.xshell:linux中有ssh.sftp.scp.slogin等 配置文件: /etc/ssh/ssh_config ssh命令 用法:ssh  [email protected]   CMD 选项: -p   port :  远程服务器监听端口 -b          :  指定连接的源IP -v          :  调

Linux九阴真经之九阴白骨爪残卷12(备份还原)

一.备份策略 1.备份的类型 类型1: 热备份:读写不受影响(MyISAM不支持热备,InnoDB支持热备) 温备份:仅可以执行读操作 冷备份:离线备份,读写操作均中止 类型2: 物理备份:复制数据文件进行备份,占用较多的空间,速度快 逻辑备份:将数据导出至文本文件中,占用空间少,速度慢,可能丢失精度 类型3: 完全备份:备份全部数据 增量备份:仅备份上次完全备份或增量备份以后变化的数据,备份较快,还原复杂 差异备份:仅备份上次完全备份以来变化的数据,备份较慢,还原简单 2.备份需要考虑的因素

Linux九阴真经之九阴白骨爪残卷1(加密和安全)

CA和证书 1.KPI :公共秘钥体系 签证机构:CA 注册机构:RA 证书吊销列表:CRL 证书存取库 509:定义了证书的结构以及认证协议标准 版本号序列号签名算法                   主体公钥         颁发者                      CRL分发点有效期限                    扩展信息主体名称                   发行者签名 证书类型: 证书授权机构的证书 服务器 用户证书 获取证书两种方法: ?使用证书授权机构 生

Linux九阴真经之九阴白骨爪残卷8(存储函数、存储过程、触发器)

存储函数 说明: 参数可以有多个,也可以没有参数,必须有且只有一个返回值. 1.系统函数 参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html 2.自定义函数(user-defined function:UDF) 自定义函数保存在mysql.proc表中 查看UDF列表 SHOW FUNCTIOIN STATUS; 查看UDF定义 SHOW CREATE FUNCTION function_name 删除U

Linux九阴真经之九阴白骨爪残卷11(并发访问控制和事务Transactions)

一.并发访问控制 实现的并发访问的控制技术是基于锁: 锁分为表级锁和行级锁,MyISAM存储引擎不支持行级锁:InnoDB支持表级锁和行级锁: 锁的分类有读锁和写锁,读锁也被称为共享锁,加读锁的时候其他的人可以读:写锁也称为独占锁或排它锁,一个写锁会阻塞其他读操作和写操作: 锁还分为隐式锁和显式锁,隐式锁由存储引擎自行管理,显式锁是用户手动添加锁: 锁策略:在锁粒度及数据安全性寻求的平衡机制. 显式锁的使用方法:LOCK TABLES tbl_name READ|WRITE MariaDB [s

Linux九阴真经之九阴白骨爪残卷13()

备份还原案例 前提:log_bin=ON 一.早上上班后误删数据库,如何恢复数据库 1.假设早上已经完成备份 (开启二进制),然后在students表里新增了一条数据 [[email protected] ~]#mysqldump -A -F --single-transaction --master-data=2 > /backup/full.sqlMariaDB [hellodb]> insert students values (26,'laobai',30,'M',7,2); 2.然后

Linux九阴真经之九阴白骨爪残卷15

一.MySQL复制相关概念 1.主从复制:主节点将数据同步到多个从节点 2.级联复制:主节点将数据同步到一个从节点,其他的从节点在向从节点复制数据 3.同步复制:将数据从主节点全部同步到从节点时才返回给用户的复制策略叫同步复制 4.异步复制:只要数据写入到主节点就立即返回给用户同步完成 5.读写分离:在前端加一个调度器,负责将改变数据的语句和查询数据的语句分开调度,把写操作调度到主节点,读操作调度到从节点 主节点: dump Thread:为每个Slave的I/O Thread启动一个dump线

轻量级自动化运维工具ansible之二:playbook详解

在介绍playbook之前,我们先了解一下YAML语言,因为playbook是用YAML语言编写的 一.YAML 1.YAML是一种可读性高的用来表达资料序列的语言,其语法和其他高阶语言类似,并且可以简单表达清单.散列表.标量等数据结构.所有的yaml文件都以"---"开头表示开始一个document,所有的列表元素以"-"开头,键值对用":",后面的空格是必须的下面是一个示例: ---   #打头符可省略 - name: John Smith

Ansible系列(五):playbook应用和roles自动化批量安装示例

html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary { display: block } audio,canvas,progress,video { display: inline-block; vertical-align: baseline } audio:not([co