我受到Ansibles文档中最佳实践部分的启发,具有以下文件夹结构:
my-playbook.yml
my-role
|
|── tasks
|
|── my-task.yml
我已经在角色的一部分my-task.yml文件中标记了任务。我使用ansible-playbook.yml --tags“ mytag”执行剧本。不幸的是,所有任务都被跳过。我可以只在剧本中直接过滤任务吗?
在我的剧本中,我做类似
- hosts: ansible_server
connection: local
gather_facts: no
roles:
- validate_properties
谢谢!
答案 0 :(得分:0)
您应该做的是使用role
模块从task
调用include_role
。您可以在该task
上应用tags
。以这个playbook
为例:
---
- name: Tag role test
hosts: local
connection: local
gather_facts: no
tasks:
- include_role:
name: debug
tags:
- dont_run
- debug:
msg: Solo shot first
tags:
- run
我的role/debug
只是一个打印Hello, world!
的任务。
如果直接调用此playbook
,则会得到以下输出:
PLAY [Tag role test]
TASK [debug : debug]
ok: [localhost] =>
msg: Hello, world!
TASK [debug]
ok: [localhost] =>
msg: Solo shot first
PLAY RECAP
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
但是,如果您排除dont_run
这样的任务:
ansible-playbook tag_roles.yml --skip-tags dont_run
这是输出:
PLAY [Diff test]
TASK [debug]
ok: [localhost] =>
msg: Solo shot first
PLAY RECAP
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
希望对您有帮助。
答案 1 :(得分:0)
您还必须使用您要运行的标签来标记子任务: 主要任务:
- name: "test tags on sub task"
include_tasks: subtask.yml
with_items: "{{ myList }}"
loop_control:
label: item
tags: test
子任务:
debug: msg="Sub Task"
tags: test