Playbook tidak lain adalah Ansible's skrip manajemen konfigurasi, dan dapat digunakan untuk mengelola penerapan dan konfigurasi node terkelola. Playbook berisi serangkaian kebijakan yang Anda inginkan untuk diterapkan oleh node terkelola atau serangkaian langkah dalam proses TI umum.
Playbook ditulis dan dikembangkan dalam bahasa teks sederhana. Sintaks yang kami gunakan di playbook berbeda dari perintah normal yang kami gunakan untuk menguji di tutorial sebelumnya.
Dalam tutorial sebelumnya, kita melihat cara Menginstal Ansible di CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9 .
Buat Playbook yang Memungkinkan
Untuk demo ini, kami akan membuat buku pedoman yang disebut web.yml untuk mengonfigurasi host untuk menjalankan server web Apache . Setiap buku pedoman terdiri dari satu atau beberapa permainan dalam daftar.
Untuk setiap permainan di buku pedoman, Anda dapat memilih mesin mana di infrastruktur Anda untuk ditargetkan dan pengguna jarak jauh mana yang menyelesaikan tugas.
vi web.yml
Playbook CentOS / RHEL:
--- - hosts: 192.168.1.20 remote_user: raj become: yes become_method: su tasks: - name: Install Apache yum: pkg=httpd state=latest - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=apache group=apache mode=0644 - name: Enable Apache on System Boot service: name=httpd enabled=yes notify: - start apache - setup firewalld - reload firewalld handlers: - name: start apache service: name=httpd state=started - name: setup firewalld firewalld: service: http permanent: true state: enabled - name: reload firewalld service: name=firewalld state=restarted
Ubuntu / Debian Playbook:
--- - hosts: 192.168.1.30 remote_user: raj become: yes become_method: sudo tasks: - name: Install Apache apt: name: apache2 update_cache: yes - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=www-data group=www-data mode=0644
Buat file HTML demo (/etc/ansible/index.html ). File HTML ini akan ditempatkan di DocumentRoot default server Apache pada simpul yang dikelola.
vi /etc/ansible/index.html
HTML:
<html> <head> <title>Apache is installed by Ansible</title> </head> <body> <h1>Apache is installed by Ansible</h1> <p>Now, Apache is managed through Ansible</p> </body> </html>
Menghancurkan Playbook yang Memungkinkan
Sekarang, kita akan membahas setiap bagian dari playbook web.yml file untuk memahami apa artinya.
File dimulai dengan
---
Semua file YAML harus diawali dengan (Tiga tanda hubung) ---
dan ini menunjukkan awal dari sebuah dokumen. YAML sangat sensitif terhadap ruang dan menggunakannya untuk mengelompokkan informasi yang berbeda menjadi satu. Spasi harus konsisten di seluruh file Anda agar dapat dibaca dengan benar. Item pada tingkat lekukan yang sama dianggap sebagai elemen saudara.
Host dan Pengguna
--- - hosts: 192.168.1.20 remote_user: raj
Baris host adalah daftar satu atau lebih grup (mis. demo-server) atau pola host (mis. 192.168.1.20), dipisahkan oleh titik dua. Bersama dengan host, Anda dapat menyebutkan akun pengguna jarak jauh.
--- - hosts: 192.168.1.20 remote_user: raj become: yes become_method: su
Anda harus menjadi pengguna root untuk menginstal paket apa pun pada sistem. Untuk melakukannya, Anda dapat menggunakan metode eskalasi hak istimewa, seperti su atau sudo . Setiap kali Anda menggunakan metode eskalasi hak istimewa semacam ini, Anda harus menjalankan playbook yang memungkinkan dengan --ask-become-pass
argumen.
Tugas
Sekarang, kami memiliki serangkaian tugas.
Tugastasks: - name: Install Apache yum: pkg=httpd state=latest - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=apache group=apache mode=0644 - name: Enable Apache on System Boot service: name=httpd enabled=yes
Setiap permainan berisi daftar tugas, yang dijalankan secara berurutan, satu per satu, melawan semua mesin yang cocok dengan pola host, sebelum melanjutkan ke tugas berikutnya.
Saat Anda menjalankan playbook, itu berjalan dari atas ke bawah dan host dengan tugas yang gagal dikeluarkan dari rotasi untuk keseluruhan playbook.
Setiap tugas harus memiliki nama dan digunakan untuk menampilkan aktivitas saat ini saat menjalankan playbook. Output ini untuk manusia, jadi bagus untuk memiliki deskripsi yang cukup baik dari setiap langkah tugas.
Di sini, akan menginstal Apache versi terbaru dan menyalin HTML demo (/etc/ansible/index.html) ke direktori /var/www/html dari node yang dikelola dan kemudian mengaktifkan layanan Apache untuk memulai secara otomatis selama boot sistem.
Beri tahu
Ini pemberitahuan tindakan dipicu di akhir setiap blok tugas dalam buku pedoman, dan hanya akan dipicu sekali meskipun diberi tahu oleh beberapa tugas berbeda.
notify: - start apache - setup firewalld - reload firewalld
pemberitahuan item berisi item yang disebut mulai Apache , siapkan firewalld dan muat ulang firewalld . Ini adalah referensi ke penangan yang melakukan fungsi tertentu saat dipanggil dari dalam tugas. Kita akan mendefinisikan start apache dan firewalld handler.
Penangan
Penangan adalah daftar tugas, tidak berbeda dengan tugas biasa. Namun, mereka hanya berjalan ketika mereka diberi tahu oleh tugas bahwa perubahan telah terjadi pada sistem klien.
handlers: - name: start apache service: name=httpd state=started - name: setup firewalld firewalld: service: http permanent: true state: enabled - name: reload firewalld service: name=firewalld state=restarted
Dalam kasus kami, kami memiliki handler yang memulai layanan Apache dan mengkonfigurasi firewall setelah paket diinstal.
Tindakan ini terjadi karena notifier memberi tahu handler tentang perubahan pada sistem, artinya paket Apache harus diinstal dan bersama dengan file demo itu harus disalin ke DocumentRoot.
Jalankan Playbook yang Memungkinkan
Setelah playbook siap, Anda dapat menjalankannya menggunakan perintah di bawah ini.
ansible-playbook web.yml -f 1 --ask-become-pass OR ansible-playbook web.yml -f 1 --ask-become-pass -u raj --ask-pass
ansible-playbook :Perintah untuk menjalankan Playbook yang mungkin.
web.yml: File YAML (File Playbook yang Dimungkinkan – yang kami buat di awal tutorial ini)
-f 1 :buku pedoman menggunakan tingkat paralelisme 1
–ask-become-pass :Karena kita perlu menjadi pengguna root untuk menginstal paket.
-u raj :Pengguna di node terkelola
Keluaran:
Asumsikan Anda telah membuat buku pedoman untuk grup (mis. server demo) server dan ingin menjalankan buku pedoman pada host tertentu. Perintah di bawah ini hanya menjalankan playbook di 192.168.1.40 .
ansible-playbook -l 192.168.1.40 web.yml -u raj --ask-become-pass
Verifikasi Tindakan Playbook yang Memungkinkan
Setelah menjalankan buku pedoman, buka browser Anda dan navigasikan ke host jarak jauh yang disebutkan dalam inventaris yang memungkinkan.
Dalam kasus saya, URL akan menjadi
http://192.168.1.20Anda sekarang seharusnya mendapatkan halaman di atas Apache diinstal oleh Ansible , dan halaman ini mengonfirmasikan kepada kami bahwa Apache diinstal oleh Ansible.
Anda telah belajar cara membuat buku pedoman sederhana untuk otomatisasi instalasi Apache. Anda dapat menemukan informasi lebih lanjut tentang membuat buku pedoman di sini .
Itu saja.