Tags trong Ansible Playbook – Bài 12

Trong quá trình làm việc với Ansible, chúng ta thường viết một playbook chứa nhiều tasks. Tuy nhiên, không phải lúc nào bạn cũng muốn chạy tất cả các tasks. Có lúc bạn chỉ muốn chạy một vài task nhất định để tiết kiệm thời gian hoặc để phục vụ nhu cầu kiểm thử.

Đây chính là lúc tags trong Ansible phát huy tác dụng. Tags cho phép bạn chọn lọckiểm soát các tasks sẽ được thực thi trong playbook.

Xem thêm:

Ansible Vault – Bài 11

Ansible Role – Bài 10

1. Cách tạo playbook với tags

Giả sử chúng ta có một playbook chạy trên localhost chỉ để minh họa.

Tạo file tags_ansible.yml với nội dung sau:

- name: Demo about Ansible Tags
  hosts: app
  gather_facts: false

  tasks:
    - name: Hi, this is debug message 1
      debug:
        msg: "This is task number 1"
      tags: 
        - first

    - name: Hi, This is debug message 2
      debug:
        msg: "This is task number 2"
      tags:
        - second
        - common

    - name: Hi, This is debug message 3
      debug:
        msg: "This is task number 3"
      tags:
        - third

    - name: Hi, This is debug message 4
      debug:
        msg: "This is task number 4"
      tags:
        - fourth

    - name: Hi, This is debug message 5
      debug:
        msg: "This is task number 5"
      tags:
        - first

    - name: Hi, This is debug message 6
      debug:
        msg: "This is task number 6"
      tags:
        - sixth

Ở đây:

  • 6 tasks.
  • Mỗi task được gắn một hoặc nhiều tags.
  • Ví dụ: task 2 có tags secondcommon. Task 5 dùng lại tag first.

2. Thực thi playbook với tags

2.1. Chạy toàn bộ tasks

ansible-playbook tags_ansible.yml

Tất cả 6 tasks đều chạy.

2.2. Chạy theo tag cụ thể

ansible-playbook tags_ansible.yml --tags first

Chỉ chạy những tasks có tag first, tức là task 1 và task 5.

2.3. Chạy nhiều tags cùng lúc

ansible-playbook tags_ansible.yml --tags "first,second"

Sẽ chạy các tasks có tag first (task 1, 5) và second (task 2).

2.4. Bỏ qua một số tags

ansible-playbook tags_ansible.yml --skip-tags first

Chạy tất cả tasks trừ những tasks có tag first (tức task 1 và task 5 sẽ bị bỏ qua).

2.5. Liệt kê toàn bộ tags trong playbook

ansible-playbook tags_ansible.yml --list-tags

Ví dụ kết quả:

playbook: tags_ansible.yml

  play #1 (localhost): Demo về Ansible Tags    TAGS: []
      TASK TAGS: [first, second, common, third, fourth, sixth]

3. Quy tắc quan trọng khi dùng tags

  1. Tags phân biệt chữ hoa và chữ thường (case-sensitive).
    • common khác với Common.
  2. Một task có thể có nhiều tags.
    • Ví dụ: tags: [second, common].
  3. Một tag có thể được gắn cho nhiều tasks.
    • Ví dụ: tag first gắn cho task 1 và task 5.
  4. Có thể kết hợp --tags--skip-tags để linh hoạt trong thực thi.

Cảm ơn bạn đã tham khảo ansible tutorial trên ttnguyen.net

Bài viết cùng chủ đề:

Ansible Templates – Bài 9

Ansible Handler – Bài 8

Ansible Modules – Bài 7

Điều kiện và vòng lặp trong Ansible – Bài 6

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em