Ansible 导入剧本(import_playbook)和导入任务(import_tasks)
如果你的playbook包含了许多许多的功能,即包含了多个play,那么你需要整合所有任务到单个playbook中
这里将前面所有playbook集合到单个playbook文件中去,这样就可以一次性执行所有任务。比如下面所示,这里只是举个例子,没有将全部展示出来。
内容很长,可能你也感受到了,可读性很差,维护也很不方便。
更友好的一种组织方式是将各个任务分类,各自存放在不同的playbook文件中(就像未整合那样),然后使用一个入口playbook文件引入所有任务文件。
例如∶
(1)配置主机SSH连接互信的任务放在sshkeyyaml
(2)设置主机名的任务放在hostname yaml
(3)互相添加DNS解析记录的任务放在add_dns yaml
(4)配置yum源并安装常用软件包的任务放在add_repos.yaml
(5)时间同步的任务放在synctime.yaml
(6)禁用selinux的任务放在disable_selinux.yaml
(7)配置防火墙的任务放在iptables.yaml
(8)修改sshd配置文件的任务放在sshd_confg yaml
因为这些任务都是初始化服务器的任务,所以将这些任务文件共同存在一个单独的目录中(比如initserver目录),则效果更佳。
最后,通过一个入口文件引入所有这些任务文件将它们组织起来。假设入口文件名为main.yaml,其内容为∶
---
- import_playbook:"init_server/sshkey.yaml"
- import_playbook:"init_server/hostname.yaml"
- import_playbook:"init_server/add_dns.yaml"
- import_playbook:"init_server/add_repos.yaml"
- import playbook:"init_server/synctime.yaml"
- import_playbook:"init_server/disable_selinux.yaml"
- import_playbook:"init_server/iptables.yaml"
- import_playbook:"init_server/sshd_config.yaml"
然后使用ansible-playbook去执行这个入口playbook文件即可∶
$ ansible-playbook main.yaml
如此一来,各个任务自治,维护起来更为容易。
一、导入剧本(import_playbook)
注意:导入的剧本必须要写完整,包括hosts、tasks
1、写导入的剧本import_playbook.yml
vim import_playbook.yml
---
- name: this is import_play
hosts: servera
tasks:
- name: install httpd
yum:
name: httpd
state: latest
2、写主要playbook.yml
vim playbook.yml
---
- name: import
import_playbook: import_playbook.yml
- name: this is main_play
hosts: servera
tasks:
- name: start httpd
service:
name: httpd
state: started
enabled: yes
ansible官方例子
- hosts: localhost
tasks:
- debug:
msg: play1
- name: Include a play after another play
import_playbook: otherplays.yaml
- name: This DOES NOT WORK
hosts: all
tasks:
- debug:
msg: task1
- name: This fails because I'm inside a play already
import_playbook: stuff.yaml
二、导入任务(import_tasks)
1、写导入任务(import_tasks)
vim import_tasks.yml
---
- name: install httpd
yum:
name: httpd
state: latest
2、写主要playbook.yml
vim playbook.yml
---
- name: this is main_play
hosts: servera
tasks:
- name: import
import_tasks:import_tasks.yml
目录 返回
首页