У меня есть 3 доступных playbook.
my_ansible
├── hosts
├── play1.yaml
├── play2.yaml
├── play3.yaml
└── roles
├── role1
├── role2
└── role3
хозяева
[play1]
host1
[play2]
host2
[play3]
host3
Теперь, когда я бегу play3
, Я хочу бежать play2(role2)
на host2
и play1(role1)
на host1
.
Я проверяю, ролевая зависимость, но это относится к тому же хосту, значит, если я добавлю role-dependency
в role3
для role1
и role2
, то эти 2 роли будут работать против host3
.
Я хочу убедиться, play1
работает на host1
только, play2
работает на host2
только и play3
работает на host3
только.
Я пытаюсь найти playbook
зависимость, но пока не повезло.
Если есть лучший способ решить эту проблему, я тоже готов пойти по этому пути.
Я думаю, что самый простой способ добиться этого - создать мастер-сценарий и определить в нем порядок пьес.
Можно включить пьесы в основную книгу. [...] Игры и задачи в каждой из перечисленных книг будут запускаться в том порядке, в котором они перечислены, как если бы они были определены здесь напрямую.
Видеть Документация Ansible по повторному использованию playbooks включает
Чтобы добиться этого play3
бежит play2
и play1
также нужно просто определить мастер-сценарий следующим образом:
---
- import_playbook: play3.yml
- import_playbook: play2.yml
- import_playbook: play1.yml
Не уверен, что понимаю, но я думаю, вы говорите, что ваша проблема в том, что вы не хотите запускать play3, не запустив сначала play2 и play1?
Я не знаю, как это сделать, но могу придумать несколько способов сделать это более удобным.
Сначала просто поместите все три воспроизведения в один файл, а затем, когда вы запустите один, вы запустите их все. Если вы хотите иногда запускать play1 без play2 и play3, используйте теги. С помощью тегов вы можете сделать так, чтобы play1 и play2 имели тег play3, чтобы случайно не запустить play3 без play1 и play2.
Обычно я помещаю свою команду ansible-playbook в файл сценария, поэтому мне не нужно ее запоминать. Если вам нравится это делать, вы можете заставить сценарий запускать три пьесы. Особенно приятно, когда у вас есть коллеги, которые не так хорошо знают ансибл. EG Я создаю файл с именем run.sh
это содержит:
ansible-playbook -i hosts myplay.yaml $@
В $@
bash для добавления любых аргументов, поэтому я могу сделать ./run.sh -t play1
и тому подобное.
Надеюсь, это поможет!