Ansible:群角色还是两个角色?
Ansible: swarm role or two roles?
我想遵循 ansible 的最佳实践并使用与功能匹配的角色。
如何组织具有相同公共但不同用途的角色?让我以安装 docker swarm.
为例进行解释
Docker swarm 可以安装为 _master_
或 _node_
。目前我有 swarm
角色。它有 main.yml
个 master 和一个节点的任务。仅通过变量我确定任务是针对主节点还是针对节点。
我不喜欢这样。我不想使用变量,而是想使用主机列表并说?
- serverA 是 swarm_master
- serverB、serverC...是swarm_node
这意味着我需要两个不同的角色,对吧?一份用于 swarm_master
,一份用于 swarm_node
。我将如何在这两个角色之间共享相同的 swarm 安装?
您可以使用:
主持人:
[swarm-master]
serverA
[swarm-nodes]
serverB
serverC
剧本:
---
- hosts: swarm-master, swarm-nodes
roles:
- role: swarm
is_master: "{{ 'swarm-master' in group_names }}"
我认为在应用角色时分配角色parameters/variables更容易理解剧本。
其他人很难猜到你在某个地方的角色会检查一些变量。
要在角色内合理地组织任务,您可以使用条件包含。
./roles/swarm/task/main.yml:
- include: docker_common.yml
- include: swarm_master.yml
when: is_master
- include: swarm_node.yml
when: not is_master
我想遵循 ansible 的最佳实践并使用与功能匹配的角色。
如何组织具有相同公共但不同用途的角色?让我以安装 docker swarm.
为例进行解释Docker swarm 可以安装为 _master_
或 _node_
。目前我有 swarm
角色。它有 main.yml
个 master 和一个节点的任务。仅通过变量我确定任务是针对主节点还是针对节点。
我不喜欢这样。我不想使用变量,而是想使用主机列表并说?
- serverA 是 swarm_master
- serverB、serverC...是swarm_node
这意味着我需要两个不同的角色,对吧?一份用于 swarm_master
,一份用于 swarm_node
。我将如何在这两个角色之间共享相同的 swarm 安装?
您可以使用:
主持人:
[swarm-master]
serverA
[swarm-nodes]
serverB
serverC
剧本:
---
- hosts: swarm-master, swarm-nodes
roles:
- role: swarm
is_master: "{{ 'swarm-master' in group_names }}"
我认为在应用角色时分配角色parameters/variables更容易理解剧本。
其他人很难猜到你在某个地方的角色会检查一些变量。
要在角色内合理地组织任务,您可以使用条件包含。 ./roles/swarm/task/main.yml:
- include: docker_common.yml
- include: swarm_master.yml
when: is_master
- include: swarm_node.yml
when: not is_master