📜  Ansible标签

📅  最后修改于: 2020-12-26 12:23:20             🧑  作者: Mango

Ansible标签

如果您有大型剧本,那么仅运行其中的特定部分而不是运行剧本中的所有内容将变得很有用。为此,Ansible支持标签属性。

将标记应用于事物时,可以通过添加命令行选项来控制它们是否执行。

执行剧本时,可以通过两种方式根据标签过滤任务,例如:

  • 在命令行上,使用-tags-skip-tags选项。
  • 在Ansible配置设置中,带有TAGS_RUNTAGS_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-tags always )

例如:

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 ]

在上面的示例中,仅在明确请求“从不”或“调试”标记时,任务才会运行。

以下是标签的另外三个特殊关键字:

只有已标记的“已标记”,

untagged ”,仅在不加标签的情况下运行,并且

all ”分别运行所有任务。

默认情况下,Ansible就像所有“ –tags ”被指定一样运行。