Estou tendo problemas para descobrir a melhor maneira de aplicar hosts / funções a diferentes sistemas operacionais no Ansible.
Atualmente, estou usando o Ansible para gerar VMs Windows / Mac / Linux, e cada uma delas possui funções diferentes que precisam ser aplicadas a elas.
Li as práticas recomendadas e tentei segui-las, principalmente para usar o método de agrupamento, mas ainda não tenho certeza, pois elas mencionam principalmente servidores web e dbservers.
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
ambientes / teste / grupos
[win_build_nodes]
win_build_machine_1
win_build_machine_2
[mac_build_nodes]
mac_build_machine_1
ambientes / teste / hosts
win_build_machine_1 ansible_host=......
win_build_machine_2 ansible_host=......
mac_build_machine_1 ansible_host=......
ambientes / teste / meta
[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
O environment/test/meta
arquivo que eu acredito que precisa ser alterado com o arquivo build_nodes:children
, mas não sei ao certo o que fazer. Anteriormente, eu tinha apenas as VMs com todas as funções criadas com o seguinte:
Site.yml antigo
- name: Apply everything
hosts: build_nodes
roles:
- common
- build-machine-test-1
- build-machine-test-2
Mas então percebi que não queria que tudo fosse construído na mesma máquina. Note, build-machine-test-1
e 2
ambos têm separado Windows / Mac / Linux aumenta à medida que eles detectam o que incluir baseado no sistema operacional.
Alguém pode sugerir uma maneira melhor de separar as VMs com base em sistemas operacionais?
build-machine-test-1
funções tem suas próprias compilações separadas com baseos_family
. Minha pergunta é para um nível mais alto, onde as próprias máquinas de compilação precisam ser separadas antes que as funções sejam aplicadas ...