Ansible 标签
Ansible 标签
如果您有一个大型剧本,那么能够仅运行其中的特定部分而不是运行剧本中的所有内容会很有用。 Ansible 出于这个原因支持标签属性。
当你在事物上应用标签时,你可以通过添加命令行选项来控制它们是否被执行。
当你执行剧本时,您可以通过两种方式根据标签过滤任务,例如:
在命令行上,使用-tags 或-skip-tags 选项。
在 Ansible 配置设置中,使用 TAGS_RUN 和 TAGS_SKIP 选项。
在 Ansible 中,标签可以应用于许多结构,但其最简单的用途是用于单个任务。让我们看一个例子,用不同的标签标记两个任务,例如:
tasks:
-yum:
name: "{{ item }}"
state: present
loop:
-httpd
-memcached
tags:
-packages
-template:
src: templates/src.j2
dest: /etc/foo.conf
tags:
-configuration
如果您想运行很长的剧本的配置和包部分,那么您可以在命令行上使用-tags 选项。
ansible-playbook example.yml--tags "configuration,packages"
如果您想在没有某些标记任务的情况下运行剧本,那么您可以使用-skip-tags 命令行选项。
ansible-playbook example.yml--skip-tags "packages"
标签重用
我们可以将同一个标签应用于多个任务。通过使用"--tags"命令行选项,将运行具有该标签名称的所有任务。
例如: 在下面的示例中,我们对多个任务使用一个标签"ntp",例如:
---
# file: roles/common/tasks/main.yml
-name: be sure ntp is installed
yum:
name: ntp
state: present
tags: ntp
-name: be sure ntp is configured
template:
src: ntp.conf.j2
dest: /etc/ntp.conf
notify:
-restart ntpd
tags: ntp
-name: be sure ntpd is running and enabled
service:
name: ntpd
state: started
enabled: yes
tags: ntp
特殊标签
"always" 是一个独特的标签,它将始终运行任务,除非特别跳过(--skip-标签总是)
例如:
tasks:
-debug:
msg: "Always runs"
tags:
-always
-debug:
msg: "runs when you use tag1"
tags:
-tag1
2.5 版中的新功能
这是另一个独特的标记,它是"从不",它阻止任务运行,除非特别请求标记。
例如:
tasks:
-debug: msg="{{ showmevar }}"
tags: [ never, debug ]
在上面的例子中,任务只会在"never"或"debug"标签被明确请求时运行。
这里是另外三个标签的特殊关键字:
"tagged" 只运行标记,
"untagged" 只运行untagged 和
"all" 分别运行所有任务。
默认情况下,Ansible 像 "--tags 一样运行>" 都已指定。