Ansible:禁止混合角色和任务?

Ansible:禁止混合角色和任务?,ansible,ansible-2.x,Ansible,Ansible 2.x,我正在使用下面的site.ymlplaybook并通过 ansible剧本网站.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"

我正在使用下面的
site.yml
playbook并通过

ansible剧本网站.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
字段已经设置好了


有什么建议吗?

您可以在剧本中混合任务和角色,还可以使用“前任务”和“后任务”控制任务执行的时间

在我看来,你似乎对不应该出现的任务有一个明确的看法,可能认为这是一部新戏

- 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