个性化阅读
专注于IT技术分析

ansible使用标签

点击下载

本文概述

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

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

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

  1. 在命令行上,使用-tags或-skip-tags选项。
  2. 在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

特殊标签

“始终”是一个唯一的标签,它将始终运行任务,除非特别跳过(始终–skip-tags)

例如:

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 ]

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

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

“已标记”仅运行已标记的,

“未加标签”,仅在未加标签的情况下运行,并且

“全部”分别运行所有任务。

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


赞(0)
未经允许不得转载:srcmini » ansible使用标签

评论 抢沙发

评论前必须登录!