我在解决如何最好地将主机/角色应用于Ansible中的不同操作系统时遇到问题。
我当前正在使用Ansible生成Windows / Mac / Linux VM,并且每个VM具有不同的角色,需要将其应用于它们。
我已经阅读了最佳实践并尝试遵循这些最佳实践,尤其是使用分组方法,但是我仍然不确定,因为它们大多提到了Web服务器和dbserver。
site.yml
- name: Apply common configuration to all nodes
hosts: all
roles:
- common
- name: Configure and deploy test node 1
hosts: build-test-node
roles:
- build-machine-test-1
- name: Configure and deploy test node 2
hosts: build-test-node-2
roles:
- build-machine-test-2
环境/测试/组
[win_build_nodes]
win_build_machine_1
win_build_machine_2
[mac_build_nodes]
mac_build_machine_1
环境/测试/主机
win_build_machine_1 ansible_host=......
win_build_machine_2 ansible_host=......
mac_build_machine_1 ansible_host=......
环境/测试/元
[mac_build_nodes]
[win_build_nodes]
[win:children]
win_build_nodes
[mac:children]
mac_build_nodes
[linux:children]
[build_nodes:children]
win_build_nodes
mac_build_nodes
environment/test/meta
我认为该文件需要使用进行更改build_nodes:children
,但是我不确定该怎么做。以前,我只是让VM具有以下所有内置角色:
旧site.yml
- name: Apply everything
hosts: build_nodes
roles:
- common
- build-machine-test-1
- build-machine-test-2
但是后来意识到我不希望所有东西都在同一台机器上构建。注意,build-machine-test-1
并2
都具有独立于Windows / Mac / Linux的基础,因为他们发现基于操作系统中包含的内容。
谁能提出一种更好的基于操作系统的虚拟机分离方法?
build-machine-test-1
角色都有基于off的独立构建os_family
。我的问题是在更高的层次上,在应用角色之前需要分离出构建机器本身……