ansible-playbook文件复用
1. ansible-playbook文件复用
1.1) include 和 import区别
include(动态):在运行时导入
- --list-tags,--list-tasks不会显示到输出
- 不能使用notify触发来自include内处理程序名称(handlers)
import(静态):在playbook解析时预先导入
- 不能与循环一起使用
- 将变量用于目标文件或角色名称时,不能使用inventory(主机/主机组等)中的变量
2. import_playbook
2.1) import_palybook结构详解图

3. 一下简单演示意思使用
3.1) 编写lnmp.yaml的文件测试
1 [root@test-1 bin]# vim nginx.yaml
2 [root@test-1 bin]# cat nginx.yaml
3 ---
4 - hosts: web1
5 gather_facts: no
6
7 tasks:
8 - name: Install nginx
9 debug: msg="test nginx "
10
11 [root@test-1 bin]# vim php.yaml
12 [root@test-1 bin]# cat php.yaml
13 ---
14 - hosts: web1
15 gather_facts: no
16
17 tasks:
18 - name: Install php
19 debug: msg="test php "
20
21 [root@test-1 bin]# vim mysql.yaml
22 [root@test-1 bin]# cat mysql.yaml
23 ---
24 - hosts: web1
25 gather_facts: no
26
27 tasks:
28 - name: Install mysql
29 debug: msg="test mysql "
3.2) 编写improt执行文件引用
1 [root@test-1 bin]# vim import_lnmp.yaml
2 [root@test-1 bin]# cat import_lnmp.yaml
3 #import lnmp
4 ---
5 - import_playbook: nginx.yaml
6 - import_playbook: php.yaml
7 - import_playbook: mysql.yaml
3.3) 检查配置文件是否正常
1 [root@test-1 bin]# ansible-playbook --syntax-check nginx.yaml
2
3 playbook: nginx.yaml
4 [root@test-1 bin]# ansible-playbook --syntax-check php.yaml
5
6 playbook: php.yaml
7 [root@test-1 bin]# ansible-playbook --syntax-check mysql.yaml
8
9 playbook: mysql.yaml
10 [root@test-1 bin]# ansible-playbook --syntax-check import_lnmp.yaml
11
12 playbook: import_lnmp.yaml
3.4) 执行improt文件
1 [root@test-1 bin]# ansible-playbook import_lnmp.yaml
2
3 PLAY [web1] ************************************************************************************************************************************
4
5 TASK [Install nginx] ***************************************************************************************************************************
6 ok: [192.168.200.132] => {
7 "msg": "test nginx "
8 }
9 ok: [192.168.200.133] => {
10 "msg": "test nginx "
11 }
12
13 PLAY [web1] ************************************************************************************************************************************
14
15 TASK [Install php] *****************************************************************************************************************************
16 ok: [192.168.200.132] => {
17 "msg": "test php "
18 }
19 ok: [192.168.200.133] => {
20 "msg": "test php "
21 }
22
23 PLAY [web1] ************************************************************************************************************************************
24
25 TASK [Install mysql] ***************************************************************************************************************************
26 ok: [192.168.200.132] => {
27 "msg": "test mysql "
28 }
29 ok: [192.168.200.133] => {
30 "msg": "test mysql "
31 }
32
33 PLAY RECAP *************************************************************************************************************************************
34 192.168.200.132 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
35 192.168.200.133 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
4.include_tasks和import_tasks结构详细图

5. 编写include_tasks文件
5.1) 编写include_tasks测试文件
1 [root@test-1 bin]# vim tasks1.yaml
2 [root@test-1 bin]# cat tasks1.yaml
3 #tasks1.yaml
4 ---
5 - name: tasks1
6 debug: msg="hello {{user}}"
7
8 [root@test-1 bin]# vim tasks2.yaml
9 [root@test-1 bin]# cat tasks2.yaml
10 #tasks2.yaml
11 ---
12 - name: tasks2
13 debug: msg="hello {{user}}"
5.2) 编写include_tasks文件
1 [root@test-1 bin]# vim include_tasks.yaml
2 [root@test-1 bin]# cat include_tasks.yaml
3 ---
4 - hosts: web1
5 gather_facts: no
6
7 tasks:
8 - include_tasks: tasks1.yaml
9 - include_tasks: tasks2.yaml
5.3) 检查配置文件
1 [root@test-1 bin]# ansible-playbook --syntax-check include_tasks.yaml
2
3 playbook: include_tasks.yaml
5.4) 执行include_tasks文件
1 [root@test-1 bin]# ansible-playbook include_tasks.yaml
2
3 PLAY [web1] ************************************************************************************************************************************
4
5 TASK [include_tasks] ***************************************************************************************************************************
6 included: /ansible/import/bin/tasks1.yaml for 192.168.200.132, 192.168.200.133
7
8 TASK [tasks1] **********************************************************************************************************************************
9 ok: [192.168.200.132] => {
10 "msg": "hello tasks1"
11 }
12 ok: [192.168.200.133] => {
13 "msg": "hello tasks1"
14 }
15
16 TASK [include_tasks] ***************************************************************************************************************************
17 included: /ansible/import/bin/tasks2.yaml for 192.168.200.132, 192.168.200.133
18
19 TASK [tasks2] **********************************************************************************************************************************
20 ok: [192.168.200.132] => {
21 "msg": "hello tasks2"
22 }
23 ok: [192.168.200.133] => {
24 "msg": "hello tasks2"
25 }
26
27 PLAY RECAP *************************************************************************************************************************************
28 192.168.200.132 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
29 192.168.200.133 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansible-playbook文件复用的更多相关文章
- ansible playbook实践(四)-如何调试写好的playbook文件
有时,我们写了一个长长,功能很强悍的yaml文件,但是,我们有可能会担心,写的yaml文件是否正确,是否有漏洞危机,毕竟是要修改线上的机器,那么,有可能我们可以从以下几个检查维度来进行,确保在大规模应 ...
- ansible playbook模式及语法
一.什么是playbook及其组成 什么是playbook playbook 翻译过来就是"剧本" playbook的组成 play:定义的是主机的角色 task:定义的是具体执行 ...
- ansible playbook详解
ansible playbook是由yml语法书写,结构清晰,可读性强,所以必须掌握yml基础语法 语法 描述 缩进 YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用tabs键 ...
- Ansible playbook 编程
Ansible playbook 编程详解与各种小案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放: ...
- (三)ansible playbook
一,YAML语法 YAML的语法和其他高阶语言类似并且可以简单表达清单.散列表.标量等数据结构.(列表用横杆表示,键值对用冒号分割,键值对里又可以嵌套另外的键值对) YAML文件扩展名通常为.yaml ...
- Ansible playbook API 开发 调用测试
Ansible是Agentless的轻量级批量配置管理工具,由于出现的比较晚(13年)基于Ansible进行开发的相关文档较少,因此,这里通过一些小的实验,结合现有资料以及源码,探索一下Ansible ...
- ansible playbook批量改ssh配置文件,远程用户Permission denied
最近手里的数百台服务器需要改/etc/ssh/sshd_config的参数,禁止root直接登陆,也就是说 [root@t0 ~]# cat /etc/ssh/sshd_config | grep R ...
- ansible playbook 变量
变量优先级 在命令中定义的变量(-e参数指定的) 在inventory中定义的变量(ansible_ssh_user等) 其他变量(role中.play中) 系统通过father_facts定义的变量 ...
- ansible笔记(11):初识ansible playbook(二)
ansible笔记():初识ansible playbook(二) 有前文作为基础,如下示例是非常容易理解的: --- - hosts: test211 remote_user: root tasks ...
随机推荐
- HDU - 4548-美素数 (欧拉素数筛+打表)
小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识. 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为"美素数&quo ...
- 分布式ID生成方案汇总
1.目标 1.1.全局唯一 不能出现重复的ID,全局唯一是最基本的要求. 1.2.趋势有序 业务上分页查询需求,排序需求,如果ID直接有序,则不必建立更多的索引,增加查询条件. 而且Mysql Inn ...
- PHP弱类型hash比较缺陷
成因分析: == 在进行比较的时候,会先将两边的变量类型转化成相同的,再进行比较 0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0. 因此CTF比赛中需要用到弱类型H ...
- js 基础面试
1.['1', '2', '3'].map(parseInt) let arr = ['1', '2', '3'] let res1 = arr.map(Number) // [ 1, 2, 3 ] ...
- 电子邮箱有哪些隐藏技能,读懂了效率提升N倍!
很多人将邮箱作为常见的通讯工具,然而,大部分职场人只了解其五分之一的功能.电子邮箱还有很多隐藏技能,身为商务精英的你,必须往下看看哦!今天跟随TOM邮箱小编导,来挖掘下邮箱的潜藏技能吧~ 作为经常外出 ...
- SpringBoot整合MinIO
今天因为公司的需求接触到这个东西,我们先来看下MinIO的官网简介 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服务接口,非常适合于存储大 ...
- html基础:jquery的ajax获取form表单数据
jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...
- unzip命令笔记
unzip命令 文件压缩与解压 unzip命令用于解压缩由zip命令压缩的".zip"压缩包. 语法 unzip(选项)(参数) 选项 -c:将解压缩的结果显示到屏幕上,并对字符做 ...
- oracle数据处理之sql*loader(一)
SQL*Loader是oracle提供的可以从多种平面文件中向数据库中加载数据的工具,它比较适合业务分析类型数据库(数据仓库);使用sqlldr工具可以在很短的时间内向数据库中加载大量的数据,像把制作 ...
- xss中shellcode的调用
shellcode就是利用漏洞所执行的代码 在完整的xss攻击之中,会将shellcode存放在一定的地方,然后触发漏洞,引发shellcode. 1.远程调用执行js 可将js代码单独放在一个js文 ...