anl*_*lar 10 ansible ansible-role
我只想将标记块中定义的 Ansible 角色的一部分导入到剧本中(并执行)。
例如,我的角色some_role包含 3 个标记为tag1、tag2和的任务块tag3。我可以创建导入整个角色的剧本:
---
- hosts: some_host
roles:
- role: roles/some_role
Run Code Online (Sandbox Code Playgroud)
然后从指定单个标签的命令行执行它:
$ ansible-playbook -i hosts.yml playbook.yml --tags tag1
Run Code Online (Sandbox Code Playgroud)
但我想将--tags tag1部分内容移入剧本本身,以便能够运行该单个块,而无需向ansible-playbook.
我无法\xe2\x80\x99找到任何简单的方法来执行具有剧本中特定标记的角色的一部分。
\n\n一种方法可能是将任务分解为多个文件,并使用 playbook 中的文件import_role或include_role。比如说,如果您在名为 role\xe2\x80\x99s 的任务目录中创建两个文件main.yml,other.yml则可以使用如下所示的其他任务。
- import_role:\n name: myrole\n tasks_from: other\nRun Code Online (Sandbox Code Playgroud)\n
Jac*_*ack -2
没关系。这是行不通的。 - 杰克
评论中的讨论很有用,所以我将其保留。
从未尝试过,但尝试apply一下include_role:
---
- hosts: some_host
tasks:
- include_role:
name: roles/some_role
apply:
tags:
- tag1
Run Code Online (Sandbox Code Playgroud)
https://docs.ansible.com/ansible/latest/modules/include_role_module.html