包含和导入文件
管理大型playbook
- 如果playbook很长或很复杂,我们可以将其分成较小的文件以便于管理
- 可采用模块化方式将多个playbook组合为一个主要playbook,或者将文件中的任务列表插入play
- 可以更轻松地在不同项目中重用play或任务序列
包含或导入文件
- Ansible可以使用两种操作将内容带入playbook。可以包含内容,也可以导入内容。
- 包含内容是一个动态操作。在playbook运行期间,Ansible会在内容到达时处理所包含的内容。
- 导入内容是一个静态操作。在运行开始之前,Ansible在最初解析playbook时预处理导入的内容。
导入playbook
- import_playbook指令允许将包含play列表的外部文件导入playbook
- 可以把一个或多个额外playbook导入到主playbook中
- 由于导入的内容是一个完整的playbook,因此import_playbook功能只能在playbook的顶层使用,不能在play内使用
- 如果导入多个playbook,则将按顺序导入并运行它们
下面以安装httpd和修改配置文件端口号为例,导入playbook:
//yum安装httpd,修改配置文件中的端口号,这里是测试,可以对边改个端口号试一下
//playbook同级下创建目录apache,进入apache创建文件config.yml、install.yml、main.yml
//编辑install.yml
[root@192 apache]# cat install.yml
---
- hosts: 192.168.218.128
tasks:
- name: install httpd
yum: httpd
state: present
//我们把准备好的httpd.conf放在了playbook下的目录files下,编辑httpd.conf,把端口号使用变量改为8080,创建模块文件httpd.conf.j2
//httpd.conf.j2中把端口号设为变量
#Listen 12.34.56.78:80
Listen {
{ port }}
//编辑config.yml
[root@192 apache]# vim config.yml
---
- hosts: 192.168.218.128
vars:
- port: 8080
tasks:
- name: config httpd
template:
src: files/httpd.conf.j2
dest: /etc/httpd/conf/httpd.conf
//编辑main.yml
[root@192 apache]# vim main.yml
- name: install httpd
import_playbook: install.yml
- name: config httpd
import_playbook: config.yml