GNU/Linux >> Belajar Linux >  >> Linux

Cara Menggunakan Tag di Ansible Playbook (Contoh)

Terkadang, Anda mungkin ingin menjalankan tugas tertentu alih-alih menjalankan seluruh file buku pedoman. Ini membantu mengurangi total waktu eksekusi buku pedoman, terutama saat menangani file buku pedoman yang besar.

Jadi, apa itu tag?

Tag di playbook adalah potongan metadata yang dilampirkan ke tugas dalam file playbook. Mereka dirujuk saat menjalankan buku pedoman dan memungkinkan Anda untuk secara selektif menargetkan tugas tertentu saat runtime. Pada dasarnya, perintah Ansible untuk menjalankan (atau tidak menjalankan) tugas tertentu dalam file playbook.

Biasanya, tugas yang dilewati telah dilakukan dan karenanya tidak perlu dilakukan lagi. Dengan cara ini, tag menghindari pengulangan dan mengoptimalkan waktu eksekusi buku pedoman. Mereka berguna saat Anda ingin menjalankan tugas tertentu sesuai permintaan.

Dalam panduan ini, kami akan mempelajari Tag yang Mungkin dan mendemonstrasikan bagaimana Anda dapat melampirkan tag ke tugas untuk menentukan eksekusi buku pedoman.

Jalankan tugas tertentu dalam buku pedoman

Mari kita ambil contoh file playbook yang menjalankan tiga tugas seperti yang ditunjukkan. Tag ditentukan menggunakan label tag di akhir setiap tugas.

---
- name: Ansible Tags example
  hosts: localhost
  gather_facts: False
  tasks:
    - name: Hello World tag example
      debug:
        msg: "Hello World!"
      tags:
        - hello

    - name: Welcome to Ansible Tags tag example
      debug:
        msg: "How are you?"
      tags:
        - welcome

    - name: Enjoy tag example
      debug:
        msg: "Enjoy!"
      tags:
        - enjoy

Dalam buku pedoman ini, kami memiliki tiga tag:halo, selamat datang, dan nikmati.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --list-tags

Seperti disebutkan sebelumnya, Anda dapat menggunakan tag untuk mengontrol eksekusi buku pedoman Ansible. Untuk menentukan tugas mana yang akan dijalankan, gunakan flag -t atau –tags.

Pada perintah di bawah ini, kami menginstruksikan Ansible untuk menjalankan tugas pertama saja yang telah ditandai sebagai hello.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --tags hello

Lewati tag tertentu di Playbook

Anda juga dapat menginstruksikan Ansible untuk melewati tag tertentu menggunakan flag –skip-tags. Dengan demikian, Ansible akan menjalankan sisa tugas di file Playbook dengan pengecualian tugas yang disediakan.

Dalam contoh ini, Ansible mengabaikan tugas terakhir yang diberi tag enjoy dan mengeksekusi sisa tugas yang ditentukan dalam buku pedoman.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --skip-tags enjoy

Pastikan bahwa tugas selalu (atau tidak pernah) berjalan

Bahkan saat Anda menggunakan tag untuk menentukan tugas mana yang akan dijalankan dalam file buku pedoman, terkadang, Anda menemukan bahwa ada tugas yang perlu Anda jalankan. Ambil, misalnya, buku pedoman yang menginstal Apache di server web jarak jauh.

Buku pedoman memiliki 3 tugas. Ini pertama-tama memperbarui daftar paket pada host jarak jauh, menginstal Apache, dan memulai ulang. Namun, sebelum menginstal Apache, diperlukan untuk memperbarui daftar paket atau menyegarkan repositori.

Karena menyegarkan repositori adalah prasyarat, Kami akan menandai tugas ini dengan tag selalu.

---
- name: install Apache webserver
  hosts: webserver
  tasks:
    - name: Update and upgrade apt packages
      apt:
        update_cache: yes
      tags:
        - always

    - name: install Apache on Ubuntu
      apt:
        name: apache2
        state: latest
      tags:
        - install_apache

    - name: Restart Apache Webserver
      service:
        name: apache2
        state: restarted
      tags:
        - restart_apache

Tanpa tag apa pun, playbook berjalan seperti yang diharapkan.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml

Jika kita menentukan untuk menjalankan tugas tertentu selain yang wajib (yang dalam hal ini adalah tugas pertama) Ansible juga akan menjalankan tugas yang menyandang tag 'selalu'.

Dalam contoh ini, kami telah menginstruksikan Ansible untuk memulai ulang Apache yang memiliki tag 'restart_apache'. Namun, tugas 'perbarui repositori apt' masih berjalan karena memiliki tag 'selalu'.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache

Dalam nada yang sama, Anda dapat memberi tahu Ansible untuk tidak pernah menjalankan tugas, dan untuk ini, kami menggunakan tag 'tidak pernah'. Ini adalah kebalikan dari tag 'selalu'.

Kembali ke buku pedoman kami. Misalkan Anda tidak ingin me-restart Apache setelah menginstal. Untuk mencapai ini, cukup berikan tag never seperti yang ditunjukkan.

- name: Restart Apache Webserver
  service:
    name: apache2
    state: restarted
  tags:
    - restart_apache
    - never

Ini juga dapat ditandai sebagai berikut menggunakan tanda kurung siku ganda:

  tags: [ restart_apache, never ]

Saat buku pedoman dijalankan tanpa tag apa pun, tugas akan dihilangkan.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml

Dari output, Anda dapat melihat bahwa tugas restart Apache telah dilewati.

CATATAN:

Tugas yang diberi tag 'tidak pernah' akan tetap berjalan ketika secara eksplisit dipanggil dalam perintah ansible-playbook. Misalnya, tugas yang memulai ulang Apache akan tetap dijalankan karena telah didefinisikan secara eksplisit dalam perintah.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache

Menutup

Tag Ansible berguna dan memberikan fleksibilitas yang dibutuhkan dalam menjalankan playbook Ansible. Anda dapat menjalankan atau melewati tugas tertentu dalam buku pedoman. Ini memberikan kontrol yang lebih baik atas playbook Anda selama runtime playbook.

Baca Juga :Cara Menggunakan Ansible Vault untuk Mengamankan Data Sensitif


Linux
  1. Bagaimana saya menggunakan Ansible dan anacron untuk otomatisasi

  2. Cara Menggunakan Perintah ethtool dengan Contoh

  3. Cara membuat Playbook yang Mungkin

  1. Cara Menggunakan Perintah IP di Linux dengan Contoh

  2. Perintah alias Linux:Cara Menggunakannya Dengan Contoh

  3. Bagaimana cara meneruskan variabel tambahan ke buku pedoman Ansible

  1. Cara Mengunduh dan Menggunakan Ansible Galaxy Roles di Ansible Playbook

  2. Cara Menggunakan Variabel dalam Ansible Playbook

  3. Cara Menggunakan Loop di Ansible Playbook