Ansible运行所有依赖角色,甚至指定特定标记

Ansible运行所有依赖角色,甚至指定特定标记,ansible,ansible-playbook,Ansible,Ansible Playbook,Ansible执行所有依赖项角色,但元文件夹中的my main.yml如下所示: --- dependencies: - { role: common, caller_role: docker, tags: ['packages'] } 因此,ansible应执行包含以下内容的角色公用部分: --- - name: Install required packages package: name={{ item.name }} state=present with_items:

Ansible执行所有依赖项角色,但元文件夹中的my main.yml如下所示:

---
dependencies:
   - { role: common, caller_role: docker, tags: ['packages'] }
因此,ansible应执行包含以下内容的角色公用部分:

---

- name: Install required packages
  package: name={{ item.name }} state=present
  with_items:
    - "{{ vars[caller_role]['SYSTEM']['PACKAGES'] }}"
  tags:
    - packages

- name: Modify /etc/hosts
  lineinfile:
    dest: /etc/hosts
    line: "{{ vars[caller_role]['REGISTRY']['ip'] }} {{ vars[caller_role]['REGISTRY']['hostname']}}"
  tags:
    - write_etc_hosts
我执行ansible 2.1.1.0如下:ansible playbook——列出标记site.yml,这里我复制site.yml:

- hosts: localhost
  connection: local
  remote_user: root
  become: yes
  roles:
    - docker
最后是树:

├── common
│   ├── defaults
│   │   └── main.yml
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── meta
│   │   └── main.yml
│   ├── README.md
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   ├── tests
│   │   ├── inventory
│   │   └── test.yml
│   └── vars
│       └── main.yml
├── docker
│   ├── defaults
│   │   └── main.yml
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── meta
│   │   └── main.yml
│   ├── README.md
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   ├── tests
│   │   ├── inventory
│   │   └── test.yml
│   └── vars
│       └── main.yml
└── site.yml

我无法理解发生了什么。

如果为角色指定标记,Ansible会将其应用于该角色中的每个任务。
在您的示例中,标签
将添加到角色
common
中的每个任务中

请检查文档中的部分

可以将标记应用于多个任务,但它们只影响任务本身。在其他任何地方应用标记只是一种方便,因此您不必在每个任务上都编写它

所有这些[示例]都将指定的标记应用于剧本、包含的文件或角色中的每个任务,以便在使用相应的标记调用剧本时可以有选择地运行这些任务


如果为角色指定标记,Ansible会将其应用于该角色中的每个任务。
在您的示例中,标签
将添加到角色
common
中的每个任务中

请检查文档中的部分

可以将标记应用于多个任务,但它们只影响任务本身。在其他任何地方应用标记只是一种方便,因此您不必在每个任务上都编写它

所有这些[示例]都将指定的标记应用于剧本、包含的文件或角色中的每个任务,以便在使用相应的标记调用剧本时可以有选择地运行这些任务


好的,谢谢你,康斯坦丁。为此,我想我将使用:

- include: foo.yml
  tags: [web,foo]

问候

好的,谢谢你,康斯坦丁。为此,我想我将使用:

- include: foo.yml
  tags: [web,foo]

关于

这仍然会将
web
foo
标记附加到
foo.yml
中的每个任务中…这仍然会将
web
foo
标记附加到
foo.yml
中的每个任务中。。。