Ansible Fundamental - Sesi 1

Pengenalan Ansible

Berangkat dari permasalahan kenapa Ansible di ciptakan dan kita butuh memakai nya? Ketika kita konfigurasi server Linux maka kita akan melakukan remote SSH lalu melakukan task yang ingin kita konfigurasi.

Bagaimana kalau server linux yang kita miliki berjumlah puluhan,dengan konfigurasi yang sama? ada beberapa permasalahan yang mungkin kita temui.

  • Capek / Pegel

  • Ada perintah command yang terlewat

  • Perintah yang di jalankan tidak terdokumentasi dengan baik.

Ansible merupakan tools untuk mengotomatisasi tugas-tugas seperti membuat dan mengkonfigurasi resource linux, windows, database dll.

What is Ansible and What Does it Do? | Liquid Web

Kelebihan ansible adalah sifatnya agent-less, maksudnya itu tidak perlu menginsal agent di setiap server yang ingin di otomasti. cukup install ansible di laptop/komputer admin saja.

Cara kerja Ansible yaitu tugas tugas yang akan di jalankan dibungkus dalam sebuah module, setiap module mempunyai tugas kecil secara spesifik seperti copy file, install web server, atau create user.

Di Ansible juga ada nama nya konsep Inventory, yang dimana kita dapat mendefinisikan IP/Domain dalam satu file yang nanti nya Ansible akan membaca file Inventory tersebut sebelum membaca module.

Menginstall Ansible

Ansible berjalan diatas bahasa pemrograman Python. Khusus sistem operasi windows, Ansible menyarankan menggunakan WSL.

Untuk menginstall Ansible cukup ikuti dokumentasi ini.

Prepare Linux Server

untuk Server kita coba create melalui Terraform di Google Cloud Platform.

Jika sudah terbuat selanjutnya lakukan SSH ke server yang sudah dibuat.

Check apakah server sudah terinstall Python

$ python3 --version

Ansible Inventory

Seperti yang sudah di bahas sebelumnya ansible mengetahui server mana yang akan kita manage melalui file Inventory.

Ansible mendukung banyak sekali format penulisan file Inventory, yaitu format INI dan YAML.

Selanjutnya kita coba buat file dengan nama **Inventory,**dan isikan IP Public dari server yang akan di manage

inventory

//ip server dan private key
34.128.82.28 ansible_user=muhamaddani3004 ansible_ssh_private_key_file=./ssh-key/cehamot

lalu kita coba ping untuk memastikan koneksi ke server.

$ ansible 34.128.82.28 -i ./inventory -m ping

response yang di dapat adalah Success,berarti kita telah berhasil terhubung ke server melalui ansible.

Biasanya satu file inventory memiliki list ip/domain server, agar file inventory terlihat rapih kita dapat kelompokan dalam sebuah group.

Bahkan parameter yang sudah kita buat sebelumnya "sangat tidak clean" didefinisikan berulang-ulang, bagaimana kalau kita buat group variables.

[server_test]
34.128.82.28

[server_test:vars]
ansible_user=muhamaddani3004
ansible_ssh_private_key_file=./ssh-key/cehamot

dan command ping tetap

$ ansible 34.128.82.28 -i ./inventory -m ping

command sebelumnya menggunakan pattern ansible <pattern> <options>

-m atau -i itu adalah options

Pattern merupakan target host/group yang diinginkan.

ada beberapa cara penulisan pattern yang dapat di lihat disini

Ansible Config

Ansible config digunakan untuk mengkonfigurasi behavior ansible saat kita menjalankan perintah-perintah ansible.

Ansible config di tulis dengan format INI dengan nama ansible.cfg,dan ansible config ini memiliki hirarki dalam pembacaan nya. Disini

Penulisan konfigurasi di ansible config di kelompokan dalam sebuah Section.

jadi contoh nya seperti ini,

$ ansible server_test -i inventory -m ping

pada command sebelumnya kita selalu mendefinisikan option -i <file-inventory> saat memanggil file inventory, dengan menggunakan ansible.cfg kita bisa menyederhanakan dengan menambahkan key inventory di section defaults.

[default]
inventory=./inventory
host_key_checking=False

satu hal lagi yang cukup penting menambahkan line host_key_checking yang fungsinya untuk menghindari host key checking saat pertama kali konek ke server baru.

Ansible Module

Pada materi sebelumnya kita selalu menggunakan option -m ping, option yang kita gunakan tersebut nama nya module.

Module merupakan unit code untuk menjalankan suatu tugas tertentu.

Ansible punya banyak sekali module yang dapat kita gunakan dokumentasi.

Jika module di eksekusi langsung di sebut adhoc command.

Setiap module dapat memiliki argument untuk kebutuhan module itu sendiri, argument ini juga sering di sebut sebagai parameter.

salah satu contoh seperti ini:

$ ansible server_test -m command "date"

$ ansible server_test -m copy -a "src=./file.txt dest=/tmp/"