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