ошибка ansible конфликтующие хосты, задачи, когда я включаю плейбуки в роль

#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