У меня возникли проблемы при разработке способов наилучшего применения хостов / ролей к различным операционным системам в Ansible.
В настоящее время я использую Ansible для генерации виртуальных машин Windows / Mac / Linux, и у каждой виртуальной машины есть разные роли, которые необходимо применить к ним.
Я читал лучшие практики и пытался следовать им, особенно для использования метода группировки, но я все еще не уверен, поскольку они в основном упоминают веб-серверы и серверы баз данных.
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
, но я не уверен , что. Ранее у меня были только виртуальные машины, на которых были построены все роли со следующим:
Старый 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
ролей имеет свои собственные отдельные сборки на основеos_family
. У меня вопрос к более высокому уровню, на котором сами машины сборки должны быть выделены перед применением ролей ...