Cara Menulis, Membuat dan Menjalankan Ansible Playbooks
Ansible Playbooks adalah tempat di mana kode Ansible ditulis, sejenis automation tasks yang dapat menjalankan perintah dengan sedikit atau hampir tidak perlu melibatkan campur tangan manusia. Playbooks merupakan salah satu bagian dari Ansible inventory. Di sini akan mempelajari bagaimana cara menulis, membuat hingga menjalankan Ansible Playbooks di server.
Ansible
Ansible adalah tool manajemen konfigurasi yang modern dan tidak memerlukan software agent pada Remote Nodes atau Hosts Node. Namun hanya perlu menggunakan SSH dan Python saja untuk berkomunikasi dan mengeksekusi perintah pada Hosts Node. Provisioning tool ini dikembangkan oleh salah satu perusahaan yang terkenal membuat software open source, RedHat.
Keberadaan arsitektur yang tidak memerlukan software khusus untuk di install pada server/node membuat Ansible bisa digunakan sebagai alternatif yang bagus untuk otomasi server. Selain itu, Ansible juga menggunakan SSH untuk mengeksekusi automation task dan file YAML (Yet Another Markup Language) yang bisa dibaca manusia untuk menentukan provisioning details.
Ansible dapat berjalan hanya dengan koneksi SSH dan tidak membutuhkan agent apapun untuk menjalankannya, namun untuk menjalankan ansible di server deployment minimal memiliki library python di dalam server deployment tersebut.
Ada 2 hal yang sangat penting jika ingin menggunakan sebuah Ansible, yaitu :
1. Inventory
Inventory adalah tempat di mana kita menyimpan alamat dari host/server yang akan menjadi tujuan dijalankannya konfigurasi yang telah ditentukan oleh Ansible.
2. Playbook
Playbook adalah tempat pendefinisian berbagai jenis konfigurasi yang akan dijalankan di target host.
Sebenarnya ada 2 cara untuk menjalankan ansible, yaitu melalui playbook dan ad-hoc. Jika menjalankan ansible dengan playbook maka perlu untuk membuat file playbook seperti di atas. Namun jika menggunakan ad-hoc bisa langsung menjalankan command tanpa playbook.
- Ansible Ad-Hoc
Cara menjalankan ansible berupa command-line instruksi via terminal.
- Ansible Playbooks
Cara menjalankan ansible yang terdiri dari playbook atau file YML dan file YML terdiri dari task, dimana task akan memanggil modul-modul ansible. Ansible playbook akan di jalankan secara berurutan.
- Ansible Tower
Ansible Tower merupakan automation untuk kalangan Enterprise dan juga berbayar. Ansible Tower memiliki banyak kemudahan di bandingkan ansible tipe lain. Ansible Tower lebih mudah untuk mengontrol server di karenakan memiliki halaman UI, selain itu juga module-module lain. Untuk keamanan ansible Tower juga sudah menyediakan secara langsung.
Anatomi Ansible YAML File
Seperti yang disebutkan di atas, untuk menjalankan Ansible diperlukan inventory dan playbook. Meskipun masih ada file-file lain yang mungkin perlu dibuat, tetapi di sini akan membahas file yang paling dasar dan paling dibutuhkan oleh Ansible.
1. Inventory (file)
Di dalam sebuah inventory perlu mendefinisikan host yang akan menjadi ansible slave dan juga nama grup.
2. Task
Di dalam sebuah playbook, terdapat kumpulan tugas berisi konfigurasi sederhana yang disebut dengan task. Penulisan task yang paling sederhana adalah mendefinisikan nama task dan juga modul yang akan digunakan.
Nama task berfungsi sebagai dokumentasi dari tujuan task tersebut dibuat dan mempermudah untuk troubleshooting ketika error terjadi. Sedangkan modul adalah pengganti dari perintah-perintah yang dijalankan secara manual pada terminal (shell).
3. Playbook (file)
Seperti yang sudah dijelaskan, kumpulan task tersebut akan membuat sebuah object yang disebut play. Karena seringkali 1 playbook hanya memiliki satu play, seringkali play (kumpulan task) disebut sebagai playbook (sebutan untuk file YAML nya).
Struktur dari direktori ketika sudah membuat 2 file tersebut kira-kira seperti ini :
Cara Menulis Ansible Playbooks
Ada beberapa hal yang perlu disiapkan, yaitu :
- Memiliki 3 VPS yang aktif dengan OS Ubuntu 20.04.
- Memiliki akses root.
- 1 VPS yang sudah terinstall Ansible.
- Inventory File yang sudah disetup pada Ansible Control Node.
Tiga VPS yang perlu disiapkan untuk :
- Satu Ansible Control Node
Ansible Control Node yang akan digunakan untuk connect dan control ke Ansible Host melalui SSH.
- Dua Ansible Hosts
Ansible Host nantinya akan dikontrol oleh Ansible Control Node yang sudah dikonfigurasi untuk otomasi.
Kemudian akan memulai dan menjalankan Ansible Playbooks dengan cara berikut :
Create dan Running Ansible Playbooks
Playbooks menggunakan format YAML untuk menentukan 1 atau lebih plays. Di sini memulai dengan membuat direktori baru dengan nama “ansible-practice”. Penulisan Ansible Playbooks dilakukan di Ansible Control Node.
$ cd ~
$ mkdir ansible-practice
$ cd ansible-practice
Salin inventory file ke direktori yang baru dibuat, yaitu ansible-practice.
$ cp ~/ansible/inventory ~/ansible-practice/inventory
Buat file playbook baru.
$ nano playbook-01.yml
Tambahkan konten di bawah ini.
---
- hosts: all
tasks:
- name: Print message
debug:
msg: Hello Testing Ansible
Kemudian simpan dan keluar.
Coba hasil playbook ini pada server yang disetup di inventory file dengan menjalankan perintah ansible-playbook. Di sini menggunakan inventory file dengan nama inventory dan root untuk menghubungkan ke remote server atau Ansible Hosts.
$ ansible-playbooks -i inventory -u root
Maka outputnya akan seperti di bawah ini.
PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
Enter passphrase for key '/root/.ssh/id_rsa':
ok: [103.xxx.xxx.201]
TASK [Print message] ***********************************************************
ok: [103.xxx.xxx.201] => {
"msg": "Hello Testing Ansible"
}
PLAY RECAP *********************************************************************
103.xxx.xxx.201 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Playbooks di sini maksudnya adalah suatu konfigurasi yang berisi kumpulan role pada Ansible yang dapat dijalankan untuk mengonfigurasi sebuah server, dengan jumlah server yang ada pada Ansible Hosts.
Kelebihan Ansible
Berikut ini beberapa kelebihan menggunakan Ansible, yaitu :
1. Mudah digunakan
Ansible mudah digunakan karena dapat langsung digunakan dengan 1 command line.
2. Mudah dipahami
Selain digunakan langsung dengan 1 command line, ansible juga mendukung pengumpulan tugas yang biasa disebut dengan ansible-playbook, playbook ini berisikan pekerjaan pekerjaan yang akan dieksekusi secara berurutan. Playbook ini dibuat dengan format yaml yang mudah dipahami. Dengan menggunakan dan juga semua konfigurasi saat ini tetap sama seperti konfigurasi di hari berikutnya.
3. Terdokumentasi
Jika saat ini sedang melakukan setup 1 server dan beberapa bulan kemudian diminta lagi untuk setup beberapa server berdasarkan sebelumnya yang telah disetup, hasilnya mungkin beda. Dengan penggunaan ansible, cukup membuat 1 konfigurasi dan bisa dieksekusi berkali-kali dengan hasil yang sama.
4. Support Command Bash
Ansible memiliki banyak module yang bisa digunakan namun jika ingin mengeksekusi perintah tertentu namun belum ada dimodule ansible, tetap bisa mengesekusinya dengan module command dan kemudian bisa diisi dengan command yang ingin dieksekusi.