Я использую следующую пьесу site.yml и вызываю ее через

ansible-playbook site.yml

- hosts: some_hosts
  vars:
    pip_install_packages:
      - name: docker

- tasks:

  - name: Conditionally include bar vars
    include_vars:
      file: bar_vars.yml
    when: some_condition == "bar"


  - name: Conditionally include foo vars
    include_vars:
      file: foo_vars.yml
    when: some_condition == "foo"


  roles:
    - role1
    - role2


  environment:
    SOME_ENV_VAR: "{{ vault_some_env_var }}"

Вызов не выполняется следующим образом:

ОШИБКА! поле "хосты" является обязательным, но не задано

Но, как видно выше, поле hosts установлено!

Какие-либо предложения?

3
pkaramol 17 Апр 2018 в 17:59

1 ответ

Лучший ответ

Вы можете смешивать задачи и роли в playbook, вы также можете контролировать выполнение задач с помощью pre_tasks и post_tasks.

Мне кажется, у вас есть ... задачи, которых не должно быть, вероятно, вы считаете это новой игрой.

- hosts: some_hosts
  vars:
    pip_install_packages:
      - name: docker

- tasks: <-- This should not have a dash

Пример использования предварительных и пост-задач для управления выполнением задач по отношению к роли:

---
- hosts: all
  name: Roles with pre and post tasks
  vars:
    somevar: foobar

  roles:
    - { role: common, tags: ["common"] }

  pre_tasks:
    - debug:
        msg: I execute before roles

  post_tasks:
    - debug:
        msg: I execute after roles
9
Tj Kellie 17 Апр 2018 в 15:20