Memulai Dengan Playbook yang Mungkin

Pada artikel terakhir, kita telah membahas tentang Ansible perintah ad hoc. Apa pun yang kami pelajari di sana akan diterapkan dalam artikel ini tetapi dengan cara yang berbeda. Tutorial ini menjelaskan apa itu Playbook di Ansible dan bagaimana bekerja dengan Playbook Ansible dengan contoh.
Contents
Apa itu Playbook Ansible? Struktur Lab Ansible SayaBuat Playbook Ansible Pertama Anda Nonaktifkan Pengumpulan FaktaJalankan Beberapa PemutaranValidasi Sintaks PlaybookPrompt Untuk KonfirmasiJalankan Dry RunMulai Dari Tugas TertentuJalankan Tugas Menggunakan TagMeningkatkan VerbositasKontrol ParalelismeKesimpulanApa Itu Playbook Ansible?

Playbook adalah file YAML yang digunakan untuk menjalankan satu atau lebih tugas terhadap host yang dikelola di lingkungan.

Perbedaan utama antara perintah ad hoc dan playbook adalah dengan perintah adhoc Anda dapat membuat satu baris sederhana atau gunakan perintah adhoc dalam skrip shell untuk menjalankan tugas-tugas sederhana. Ketika Anda ingin melakukan operasi berulang yang kompleks, maka Anda harus menulis buku pedoman dan menyimpannya di repositori pusat dan menggunakannya kapan pun diperlukan.

Mari kita asumsikan Anda adalah bagian dari tim admin sistem. Setiap kali server baru dibangun, tim Anda bertanggung jawab untuk mengeraskan server sesuai kebijakan perusahaan Anda.

Dalam hal ini, Anda dapat membuat buku pedoman dan mengeraskan server. Sekarang buku pedoman yang sama dapat digunakan untuk melawan jumlah N dari host baru yang perlu dikeraskan.
Struktur Lab Ansible Saya

Saya akan menggunakan lab yang memungkinkan yang dibuat dengan dua node Ubuntu 20.04LTS. Anda dapat merujuk ke artikel berikut untuk mereplikasi pengaturan lab yang sama jika diperlukan.

Pengaturan Lab Otomatis Dengan Vagrant Dan Virtualbox Di Linux
Buat Playbook Ansible Pertama Anda

Seperti yang saya nyatakan sebelumnya, Playbook ditulis dalam format YAML. Playbook harus memiliki ekstensi .yml atau .yaml. Lihat link di bawah ini jika Anda ingin belajar tentang YAML.

YAML Tutorial | Memulai Dengan YAML

Di bawah ini adalah contoh buku pedoman yang akan saya gunakan untuk mendemonstrasikan cara kerja buku pedoman. Ini adalah buku pedoman sederhana yang akan menangani pengaturan pesan spanduk khusus ketika saya masuk ke node.

- name: First Play - Ubah host pesan spanduk: ubuntu2 gathering_facts: false menjadi: ya tugas: - nama: Hapus Jalankan Izin dari /etc/update-motd.d/* file: path: /etc/update-motd.d/ mode: u=rw,g=rw,o=rw recurse: yes - name: ADD BANNER MESSAGE copy: content : "Selamat datang di OSTechnix" tujuan: /etc/motd

Mari kita lihat setiap bagian dari buku pedoman ini. Buku pedoman dibagi menjadi dua bagian. Bagian pertama berisi definisi putar seperti nama putar, host target, dan eskalasi hak istimewa. Nama
– Playbook harus memiliki nama putar yang tidak lain adalah pengelompokan logis dari host target, parameter, dan tugas. Anda dapat memiliki lebih dari satu permainan di buku pedoman. Berikan nama deskriptif untuk play.hosts – Targetkan host. Ansible akan memeriksa file inventaris dan memverifikasi apakah nilai yang diberikan di host tersedia di file inventaris. Menjadi – Ketika disetel ke ‘ya’ akan menjalankan tugas dengan hak istimewa sudo. Karena saya mengubah izin di bawah direktori /etc/, tugas harus diserahkan dengan hak istimewa yang lebih tinggi.
Lihat artikel komprehensif kami tentang eskalasi hak istimewa untuk memahaminya secara detail.

Otentikasi SSH yang Dapat Dimungkinkan dan Eskalasi Hak Istimewa

Di bagian kedua, tugas didefinisikan. Anda harus menggunakan kata kunci “tugas” untuk mendefinisikan tugas. Di sini saya telah membuat dua tugas. Setiap tugas harus diberi nama menggunakan kata kunci “nama”.
Tugas pertama akan menghapus izin eksekusi dari direktori /etc/update-motd.d/*. Saya menggunakan modul file untuk ini. Tugas kedua akan menulis string “Selamat datang di OSTechnix” ke file /etc/motd menggunakan modul salin.
Sebelum menjalankan buku pedoman, izinkan saya memeriksa status node target saya (managed2.anslab.com) dengan masuk ke node. Anda dapat melihat ketika saya masuk ke node, saya mendapatkan pesan banner default dan izin eksekusi diatur untuk semua file.

$ ssh [email protected]

Untuk menjalankan playbook, jalankan perintah berikut dari terminal.

$ ansible-playbook # SYNTAX $ ansible-playbook banner_mod.yml

Mari kita coba memahami output.

1. Saat Anda menjalankan buku pedoman, hal pertama yang akan Anda lihat adalah nama putar.

PLAY [Ubah pesan spanduk] *

2. Tugas pertama yang mungkin dijalankan adalah “Mengumpulkan Fakta”. Kami belum mendefinisikan tugas ini di buku pedoman kami, tetapi ini akan berjalan kecuali Anda mematikannya.

TASK [Mengumpulkan Fakta] *ok: [dikelola2]

3. Sekarang tugas yang Anda tetapkan dalam file YAML sebagai bagian dari permainan akan mulai dijalankan satu per satu. Ansible akan membaca buku pedoman dari atas ke bawah sehingga tugas akan dijalankan dalam urutan yang ditentukan dalam buku pedoman.

TASK [Hapus Izin Pelaksanaan dari /etc/update-motd.d/*] *********** ************************************************** ****************************** berubah: [dikelola2] TUGAS [TAMBAHKAN PESAN BANNER] ********* ************************************************** ************************************************** *************** diubah: [dikelola2]

4. Setelah semua tugas selesai, Anda akan memiliki rekap permainan yang akan memberi Anda jumlah status total tugas yang berbeda. Dalam kasus kami, total tiga tugas (ok=3) dijalankan termasuk pengumpulan fakta dan hanya dua tugas (diubah=2) yang membuat perubahan pada RECAP node.

PLAY terkelola ************** **************************** dikelola2 : ok=3 diubah=2 tidak dapat dijangkau=0 gagal=0 dilewati=0 diselamatkan=0 diabaikan= 0 

Sekarang saya dapat memvalidasi node yang dikelola untuk melihat apakah perubahan diterapkan dengan sukses.
Nonaktifkan Pengumpulan Fakta

Seperti yang telah diramalkan di bagian sebelumnya ketika Anda menjalankan buku pedoman, kemungkinan akan mengumpulkan fakta tentang node yang dikelola dengan menjalankan modul pengaturan. Anda dapat menonaktifkan pengumpulan fakta dengan menambahkan baris berikut di playbook.

gather_facts : false

Sekarang ketika Anda menjalankan playbook lagi, Anda hanya akan melihat dua tugas yang ditentukan dalam playbook. Karena Ansible adalah idempoten, ansible tidak akan mencoba mengubah keadaan objek jika sudah diubah. Jadi Anda akan melihat output sebagai OK.

Gathering fakta akan membuat permainan berjalan lambat ketika Anda harus menjalankan playbook melawan sejumlah besar host. Ini karena ansible harus terhubung dengan node yang dikelola dan mengumpulkan banyak data tentang node yang tidak diperlukan untuk semua kasus.

Anda dapat memeriksa perbedaan waktu eksekusi dengan dan tanpa fakta di bawah ini.

$ time ansible-playbook banner_mod. yml # TANPA FAKTA nyata 0m1.642s pengguna 0m0.731s sys 0m0.220s $ waktu mungkin-playbook banner_mod.yml # DENGAN FAKTA nyata 0m2.547s pengguna 0m1.139s sys 0m0.187s

Execute Multiple Plays

Anda dapat memiliki lebih dari satu permainan di playbook . Seperti yang Anda lihat pada gambar di bawah, permainan kedua saya memiliki satu tugas yang akan memulai kembali layanan sshd menggunakan modul layanan di host.

-name yang berbeda: Putar Kedua - Mulai ulang host layanan SSHD: ubuntu1 gathering_facts: false menjadi : ya tugas: - nama: Mulai ulang SSHD di layanan managed1.anslab.com: nama: sshd status: restarted

Ayo jalankan buku pedoman lagi dan Anda dapat melihat dari output kedua pemutaran berhasil dijalankan.

$ ansible-playbook banner_mod.yml

Now Anda harus memiliki pemahaman yang adil tentang cara menulis buku pedoman dan menjalankannya. Playbook mendukung fitur berguna tambahan yang akan kita lihat di bagian mendatang.
Validasi Sintaks Playbook

Anda dapat menggunakan tanda –syntax-check untuk memeriksa kesalahan sintaks di buku pedoman Anda. Saya sengaja membuat kesalahan sintaksis di baris “gather_facts” di playbook saya.

$ ansible-playbook --syntax-check banner_mod.yml

Prompt For Confirmation

Ketika Anda menggunakan flag –step, untuk setiap tugas dalam permainan Anda, ia akan meminta konfirmasi Anda untuk melanjutkan dengan task.

$ ansible-playbook --step banner_mod.yml

Execute A Dry Run

Alih-alih menjalankan tugas di node yang dikelola, Anda dapat mensimulasikan run menggunakan -C atau –check flag.

$ ansible-playbook - C banner_mod.yml

Mulai Dari Tugas Tertentu

Anda memiliki opsi untuk mulai menjalankan buku pedoman dari tugas tertentu. Anda dapat melihat dari gambar di bawah ini saya mulai dari Play2(task1), jadi kedua tugas di play1 dilewati. Gunakan tanda –start-at-task dan berikan nama tugas sebagai argumen.

$ ansible-playbook banner_mod.yml --start-at-task "Mulai ulang SSHD di managed1.anslab.com"

Jalankan Tugas Menggunakan Tag

Anda dapat permainan kelompok dan tugas dengan tag. Menggunakan tag, Anda dapat menjalankan hanya tugas-tugas dengan tag tertentu atau melewatkan tugas.

Anda dapat melihat gambar di bawah ini di mana saya telah menggunakan kata kunci “tag” dan menetapkan beberapa nilai untuk itu. Anda juga dapat menambahkan beberapa nilai ke satu tag.

Anda dapat menjalankan perintah berikut untuk mendapatkan daftar tugas beserta tagnya.

$ ansible-playbook banner_mod.yml --list-tasks$ ansible-playbook banner_mod.yml - -list-tags

Use -t menandai dan meneruskan nama tag sebagai argumen. Anda dapat menjalankan tugas berbasis tag tertentu atau beberapa tag seperti yang ditunjukkan di bawah ini. Dalam contoh di bawah ini, saya menggunakan dua tag berbeda dari dua permainan yang berbeda.

$ ansible-playbook -t "set_perm","restart service" banner_mod.yml

Anda juga dapat melewati tugas dan menjalankan semua tugas lain menggunakan –skip- tags flag.

$ ansible-playbook -t "set_perm","restart service" --skip-tags "set_perm" banner_mod.yml

Tingkatkan Verbosity

Terkadang playbook tidak berperilaku seperti yang Anda harapkan. Mungkin ada sesuatu yang terjadi di latar belakang atau kesalahan yang berbeda.

Untuk men-debug masalah, Anda dapat meningkatkan verbositas (-v) saat menjalankan buku pedoman. Ada empat tingkat verbositas. Anda dapat mengatur verbositas dalam file ansible.cfg dengan menambahkan properti “verbosity=