如何将标记应用于Ansible任务文件中的每个命令?

Ryr*_*yre 8 ansible

Ansible最佳实践文档具有以下示例代码:

---
# file: roles/common/tasks/main.yml

- name: be sure ntp is installed
  yum: name=ntp state=installed
  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=running enabled=yes
  tags: ntp
Run Code Online (Sandbox Code Playgroud)

我希望避免重复这一tags: ntp行.这些指令中的每一条都可以继承标签吗?

Rau*_*ugo 13

你可以使用 - 阻止:

?  ~ cat become.yml
---
- hosts: localhost
  user: vagrant
  tasks:
   - block:
      - shell: whoami
        register: result

      - debug: var=result.stdout

      - name: become_root_user
        become: true
        become_user: root
        shell: whoami
        register: sudo_test_result

      - debug: var=sudo_test_result.stdout
     tags:
      - block1
   - block:
      - name: creating_new_app_user
        become: true
        become_user: root
        become_method: sudo
        user: name=app_user password=Bzs310di86b6E groups="adm,sudo" system=yes state=present

      - name: become_app_user
        become: true
        become_user: app_user
        become_method: sudo
        shell: whoami
        register: app_user_test_result

      - debug: var=app_user_test_result.stdout
     tags:
      - block2
Run Code Online (Sandbox Code Playgroud)

~ansible-playbook -i realtime-automation/hosts-slaves become.yml --tags"block1"

在您的具体情况:

---
- block:
    - name: be sure ntp is installed
      yum: name=ntp state=installed

    - name: be sure ntp is configured
      template: src=ntp.conf.j2 dest=/etc/ntp.conf
      notify:
        - restart ntpd

    - name: be sure ntpd is running and enabled
      service: name=ntpd state=running enabled=yes
  tags: ntp
Run Code Online (Sandbox Code Playgroud)


小智 8

在v2之前,可以实现为'include'分配标签

将此任务移动到另一个文件,例如ntp.yml

---
# file: roles/common/tasks/ntp.yml

- name: be sure ntp is installed
  yum: name=ntp state=installed

- name: be sure ntp is configured
  template: src=ntp.conf.j2 dest=/etc/ntp.conf
  notify:
    - restart ntpd

- name: be sure ntpd is running and enabled
  service: name=ntpd state=running enabled=yes
Run Code Online (Sandbox Code Playgroud)

然后将其包含在main.yml中

---
# file: roles/common/tasks/main.yml
- include: ntp.yml
  tags: ntp
Run Code Online (Sandbox Code Playgroud)