我有一套相当复杂的剧本和导入的角色来构建一个应用程序平台。一切都在一个hosts.ini
文件中定义,并且广泛使用组来识别专家服务器角色:Web、数据库、搜索等。
然而,整个平台支持应用程序的两个不同实例,在某些情况下,我需要在四个 Web 节点中的两个之间建立特定的链接。例如,对于下面的主机列表,我想在 app1_node1 和 app1_node2 以及 app2_node1 和 app2_node2 之间设置 gluster 卷。
[web]
app1_node1
app1_node2
app2_node1
app2_node2
并有一个这样做的剧本,但一次只能用于两个节点。因此,如果 hosts 文件还包含以下内容:
[webapp1]
app1_node1
app1_node2
[webapp2]
app2_node1
app2_node2
--limit=webapp1
并且使用(或 webapp2)调用剧本,一切正常。
但我不确定一次性构建所有内容的最佳方法。例如,我可以复制 playbook 并在每个中使用不同的 hosts 语句。但这似乎不是一个好主意。
我想出的最佳解决方案是有一个中间剧本启动器,如下所示:
---
- name: PLAYBOOK playbook_launcher.yml
hosts: webapp1
tasks:
- name: Include playbook
import_playbook: theplaybook.yml
- hosts: webapp2
tasks:
- name: Include playbook
import_playbook: theplaybook.yml
实际的剧本有更广泛的主机声明。
---
- name: PLAYBOOK theplaybook.yml
hosts: web
尝试使用: