#ansible
#ansible
Вопрос:
моя структура каталогов playbook.
/ansible_repo/
└── playbooks/
├──playbooks1.yml
├──playbooks2.yml
├── somerole.yml --> main playbook with roles
└── roles/
└── somerole
├── default
│ └── main.yml
├── handler
│ └── main.yml
├── tasks
│ └── main.yml
└── vars
└── main.yml
playbooks1.yml :
---
- hosts: all
tasks:
- pause:
minutes: 3
- name: ping host
win_ping:
somerole.yml :
---
- hosts: ci_host
roles:
- somerole
somerole tasks main.yml :
---
- include: playbooks/playbooks1.yml
когда я запускаю роль на каком-либо хосте:
ansible-playbook role-test.yml -vv --limit somehost
Я получаю эту ошибку:
fatal: [somehost]: FAILED! =>
reason: |-
conflicting action statements: hosts, tasks
если я изменю подобное, чтобы оно прошло:
- pause:
minutes: 3
- name: ping host
win_ping:
Я попытался понять, как установить хосты и задачи в обоих, role-tasks-main и playbook.yml
, и включить playbook в задачу роли.
если я получу конфликт, я могу настроить иерархический хост?
Комментарии:
1. почему вы используете конфигурацию хоста в yml, а не в host.ini? Также работает ли ваша проверка ping?
2. У меня также есть инвентарь хостов, я показываю здесь пример для моего репозитория
3. итак, что говорит ansible all -m ping?
4. плейбук запускается на всех хостах в инвентаре и запускает одну за другой модель win_ping (ее пример плейбука, это может быть модель Linux, модель оболочки или что-то еще), я хочу запустить роль со многими задачами в каталоге задач и запустить в main все задачи и добавить еще один плейбук из каталога playbooks
5. сложно понять, чего именно вы хотите. Обычно вы создаете один плейбук и тестируете его до тех пор, пока он не будет работать с вашим одноразовым хостом. Таким образом, трудно изолировать проблему. Извините, я не могу здесь помочь
Ответ №1:
Ошибка указывает на то, что вы включаете плейбук внутри роли и для роли hosts
и tasks
не разрешены.
Как somerole.yml
и в вашем основном сборнике игр, вы можете вызывать другие сборники игр и роли по мере необходимости.
Пример:
- name: run playbook playbook1
import_playbook: playbooks/playbooks1.yml
- hosts: ci_host
roles:
- somerole
- name: run playbook playbook2
import_playbook: playbooks/playbooks2.yml