mengenal dan belajar ansible pada linux

0
287

halo sobat sekolahlinux, kali ini saya akan sedikit membahas tentang ansible, sebelum lebih jauh kita harus tau apa itu ansible, dan apa bedanya ansible dengan terraform, pada dasarnya kedua tool tersebut tidak dapat kita bandingkan karena beda peruntukan
ansible sendiri saat ini lebih banyak digunakan sebagai sebuah configuration management yang tujuannya untuk provisioning sebuah instance atau banyak instance agar instance tersebut dapat langsung digunakan dan berjalan tanpa kita harus config os dan applikasinya secara manual
sedangkan untuk terraform saya lebih suka menyebutnya sebagai service provisioner and infrastructure orchestrator, seperti membuat instance/vm loadbalaner, firewall, security group dll didalam sebuah provider cloud seperti aws, gcp dll
ok kembali ke judul dan mari kita langsung uji coba, pertama berikut ini gambaran layout file dari script ansible,

didalam ansible kita akan mengenal namanya inventories, playbook, roles, tasks, variable, files, templates, handlers, tags, ansible-vault

inventories:

adalah sekumpulan host-host yang dikategorikan kedalam environment, misal host yang ada di environment production & staging, nah didalam masing-masing environment tersebut juga ada variable masing-masing yaitu group_vars dan host_vars

playbook:

berisi bahasa orchestration ansible yang didalamnya terdapat rule-rule seperti host, role, variable dan task, playbook adalah penyatuan dari sekumpulkan role, host, variable dll yang akan di eksekusi untuk provisioning suatu instance/vm

roles:

berisi sekumpulan task-task yang nantinya digunakan/dipanggil didalam sebuah ansible playbook

tasks:

berisi perintah-perintah untuk provisioning suatu vm, misal task install nginx, task mengganti hostname dll

variable:

sebuah kata yang memiliki arti berbeda dan juga nilai berbeda & bervariasi, tergantung dari seseorang mau memberikan value apa didalam variable tersebut

files:

folder files biasanya berisi file-file yang biasanya nanti akan di transfer ke vm/instance tujuan, misal file-config dll

templates:

folder templates biasanya berisi file-file yang mirip seperti di folder files, cuman bedanya di folder templates setiap file berekstensi .j2 atau disebut jinja template, didalam file j2 ini bisa kita sisipi dengan variable-variable sehingga lebih flexible juga

handlers:

berisi sekumpulan task, bukan task utama tapi task notify yang digunakan untuk melakukan perintah start, restart ataupun stop pada suatu service

tags:

adalah sebuah code/tanda untuk setiap task, misal task1 akan diberi tag web, tags digunakan untuk menjalankan spesifik task yang ada didalam sebuah playbook, jadi tidak semua task dijalankan

ansible-vault:

ansible vault adalah sebuah feature untuk mengencrypt value sebuah variable yang bersifat sensitif, contohnya seperti password, username ataupun hal-hal sensitif lainnyaani

Memulai Ansible

siapkan 3 buah vm, detailnya seperti dibawah (pastikan pubkey dari privkey ansible server sudah tertanam di semua server ansible target)

  • 192.168.10.1   = ansible server
  • 192.168.10.10 = ansible target1
  • 192.168.10.20 = ansible target2

pada tutorial kali ini susunan atau layout filenya saya rubah menjadi sederhana seperti dibawah ini

pada layout diatas saya mempunyai playbook file ./webserver.yml yang isinya seperti dibawah ini

lalu pada file ./vault_pass.txt isinya seperti dibawah ini

lalu pada file ./vault_vars.txt sebelum di encrypt isinya seperti dibawah ini

lalu pada file ./templates/default.j2 isinya seperti dibawah ini

lalu pada file ./roles/common/tasks/main.yml isinya seperti dibawah ini

lalu pada file ./roles/web-server/tasks/main.yml isinya seperti dibawah ini

lalu pada file ./roles/web-server/handlers/main.yml isinya seperti dibawah ini

lalu pada file ./inventories/production/hosts isinya seperti dibawah ini

lalu pada file ./inventories/production/group_vars/all.yml isinya seperti dibawah ini

lalu pada file ./inventories/production/group_vars/nginx.yml isinya seperti dibawah ini

pertama kita harus mengencrypt file vault_vars.yml dengan perintah dibawah ini tujuannya adalah untuk encrypt value-value sensitif pada ansible

lalu untuk menjalankannya bisa dengan perintah dibawah ini

dan outputnya akan seperti dibawah ini (beberapa task untuk akan diskip karena host tujuan adalah ubuntu/debian)

pada beberapa case diperlukan password ketika akan melakukan sudo dikarenakan os yang terinstall belum menerapkan passwordless pada sudo/wheel di sudoers mereka, maka jangan lupa tambahkan variable ini pada saat melakukan perintah ansible-playbook, tidak disarankan meletakan password sebagai plain text, jangan lupa di encrypt mengunakan ansible vault

sekian tutorial ansible kali ini semoga bermanfaat, jika ada penjelasan yang kurang detail silahkan tanyakan langsung dikolom komentar ya 🙂

LEAVE A REPLY

Please enter your comment!
Please enter your name here