Ansible运行所有依赖角色,甚至指定特定标记
Ansible执行所有依赖项角色,但元文件夹中的my main.yml如下所示: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:
---
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
中的每个任务中。。。