ansible - 仅运行具有特定标记或未标记的任务
问题描述
在这个剧本中:
- hosts: all
tasks:
- name: task A
debug: msg="task A"
tags:
- A
- name: task B
debug: msg="task B"
tags:
- B
- name: untagged task
debug: msg="untagged task"
我想使用标记A
和未标记任务运行任务。
我知道该--skip-tags
选项,但这是一个简化的示例。我的用例是一个非常复杂的剧本,其中包含许多标签和角色,任务具有不同的标签,以及标记和非标记任务之间的相互依赖关系。长话短说,对我来说唯一的“干净”选项是只运行指定的标签和未加标签的标签。
有没有办法调用ansible-playbook
以便它只运行特定的标签和未标记的任务?我正在使用 ansible 2.9.6
解决方案
这确实是可能的:
例如,如果您只想运行很长的剧本中的“配置”和“包”部分,您可以在命令行上使用 --tags 选项:
ansible-playbook example.yml --tags “配置,包”
来源:https ://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#tags
随着:
标记还有另外 3 个特殊关键字:和
tagged
,它们分别只运行已标记、仅未标记和所有任务。untagged
all
来源:https ://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#special-tags
所以你的解决方案是:
ansible-playbook --tags "untagged,A" playbook.yml
推荐阅读
- python - 使用字符串处理选择某些数据框列
- jenkins - Jenkins groovy.lang.MissingMethodException:没有方法签名:catchError()
- python - 在终端打印时,会出现额外的替换字符“�”(U+FFFD)
- java - 从另一个类扩展的类可以使用具有不同返回类型的相同方法吗?
- node.js - npm 中的“生产”标志有什么用?
- c# - 从 https 下载文件适用于 Chrome,但不适用于 C#
- jenkins - filter-by-name-wildcard 在带有 git 的 Jenkins Job-Builder 中不起作用,因为它在用于多分支管道的 Jenkins Web 界面中
- javascript - React 中的错误:渲染的钩子比上一次渲染时更多
- python - 在决策树中查找到决策边界的距离
- c++ - 让细节命名空间代码看不见 - 优雅