Tutorial Instalasi dan Penggunaan Ansible di Debian 11

 Ansibel adalah software gratis, open-source, dan populer untuk keperluan automation dan manajemen konfigurasi (configuration management). Tools ini di tulis dalam bahasa phyton. Di bidang teknologi, konsep automatisasi (automation) sudah sangat diadopsi dan diterapkan oleh banyak organisasi untuk mengelola lingkungan yang kompleks (complex enviroment) dan perlu untuk di skalakan (dikembangkan) secara cepat oleh system administrator dan developer. Konsep ini telah mendorong dibuatnya alat-alat (tools) seperti Ansible, Puppet, Chef, Foreman, Katelo, dan CFEngine. Dari semua pilihan tools automation ansible menjadi pilihan pertama di banyak organisasi IT untuk melakukan manajemen sistem berbasis UNIX/Linux karena beberapa fitur berikut :

  • Gratis dan open-source
  • Mudah di set-up dan di gunakan
  • Fleksibel karena memungkinkan orkestrasi dimulai di seluruh lingkungan
  • Efisien karena tidak perlu menginstall software lain atau membuka port firewall baru
  • Powerful dan bisa di gunakan dalam alur kerja IT yang kompleks
  • Secure / Aman

Untuk tugas orkestrasi, ansible perlu di install di salah satu nodes. Nodes yang melakukan manajemen node lain disebut dengan Control node. Node ini menyimpan file Ansibel Playbook. Yaitu file YAML yang berisi langkah-langkah yang akan ingin dijalankan pengguna, pada mesin-mesin tertentu atau biasa dikenal dengan managed nodes.

Istilah lain dalam ansible bisa anda cari di internet, atau dengan membaca artikel berikut : https://www.logicmonitor.com/blog/ansible-key-terms-getting-started

Pada tutorial ini kita akan melakukan instalasi Ansible di Debian 11.

Pra-Syarat

Untuk mengikuti panduan ini, kamu harus menyiapkan hal berikut :

  • 3 servers – dengan control node Debian 11
  • Membuat user dengan privileges sudo di setiap user. *lihat tutornya disini
  • Sudah menginstall ssh di semua nodes

Saya sudah melakukan setup seperti berikut.

Task

IP-Address

Control Node (node1 / Debian11)

172.30.20.1

Managed Node 1 (node2 / Debian11)

172.30.20.6

Managed Node 2 (node3  /Debian11)

172.30.20.5

dan membuat user sudo dengan nama : sysabdul di semua nodes.

Langkah 1 – Install Ansible di Debian

Lakukan instalasi ansible di salah satu node, yang akan dijadikan Control node. Disini saya menggunakan node 1 (ip: 172.30.20.1).

Tambahkan repository debian 11 kemudian update system package.

sudo apt update

Install Ansible menggunakan perintah berikut

sudo apt -y install ansible sshpass curl

Konfirmasi apakah instalasi ansible berhasil dengan melakukan cek versi ansible.

which ansible
sudo ansible --version

Ansible berhasil di install.

Ada 2 pilihan cara lain untuk instalasi ansible, yaitu menggunakan PIP dan Repository tertentu. Untuk lebih jelasnya silahkan kunjungi halaman berikut

Langkah 2 – Membuat file Host Inventory

Setelah melakukan instalasi Ansible di Control node, file /etc/hosts akan dibuat secara otomatis. Pada file ini kita bisa menambahkan managed nodes / node-node yang akan di konfigurasi. Kita juga bisa membuat file inventory sendiri di direktori home.

sudo nano ~/.hosts

tambakan script berikut

[node1] 172.30.20.6 ansible_ssh_pass=your_password ansible_ssh_user= your_username [node2] 172.30.20.5 ansible_ssh_pass=your_password ansible_ssh_user= your_username

Ganti your_password dengan password dan your_username dengan username yang digunakan pada managed nodes. 


Setelah itu kita buat SSH fingerprints key diantara Control Node dengan Managed nodes.

ssh-keygen -t rsa

# Hanya tekan Enter sampai selesai.

Kemudian salin (copy) Public keys ke managed nodes menggunakan perintah berikut.

ssh-copy-id -i ~/.ssh/id_rsa_pub your_username@172.30.20.6
ssh-copy-id -i ~/.ssh/id_rsa_pub your_username@172.30.20.5 

# Sesuaikan your_username dan IP Adress yang kamu gunakan.

Dengan konfigurasi diatas memungkinkan control nodes untuk melakukan manajemen node tanpa menggunakan otentikasi password.

Langkah 3 – Working with Ansible

Dengan ansible, Kita hanya perlu melakukan manajemen node dari Control node menggunakan Syntax dibawah.

ansible -i [inventory_file -m [module] [hosts]

Sekarang kita coba test apakah managed host sudah ditambahkan dan bisa terhubung.

sudo ansible -i ~/.hosts -m ping all

Contoh out-put.

Control nodes sudah berhasil terhubung dengan managed nodes dan bisa melakukan manajemen konfigurasi secara otomatis.

Apa yang terjadi ketika menggunakan module ping ?

Module ping digunakan untuk request check-up ke remote host (managed host). Modul ini melakukan spesifik cek untuk hal-hal berikut ini :

  • Apakah remote host dalam keadaan hidup (up) dan bisa di akses.
  • Apakah lingkungan Python berhasil berjalan untuk syarat menggunakan ansible playbooks.
  • Cek user login dan privileges.
Setelah request ping dikirimkan ke remote host, modul akan mengembalikan value yang menandakan apakah ping berhasil berjalan. Secara default, ping modul akan mengembalikan string "pong" jika suskes, dan sebuah excpetion (penolakan) beserta pesan error (msg) jika gagal.

Ping module, bukan ICMP ping; melainkan, sebuah module kecil yang memerlukan lingkungan Python untuk dieksekusi di remote host. baca lebih lanjut disini.

Setelah melakukan test ping pada managed noded, kita akan lakukan uji-coba apakah managed nodes sudah bisa menerima perintah dari control node dengan melakukan cek memory yang tersedia di managed nodes.

sudo ansible -i ~/.hosts -m shell -a "free -m" all

Uji-coba dengan melakukan cek konfigurasi networking di node2

sudo ansible -i ~/.hosts -m shell -a "ip address" node2

Managed nodes berhasil terhubung dan bisa menerima perintah dari controled node.

Install Aplikasi menggunakan Ansible

Pada tutorial ini, kita akan melakukan instalasi di managed nodes menggunakan file Playbook. Kita akan install Web Server Apache2, dan melakukan cek system-uptime (waktu server menyala) di node 2. Untuk itu kita buat file Playbood di Control Nodes.

sudo nano playbook.yaml

Pada file YAML tambahkan informasi berikut.


---
- hosts: node2
  become: yes
  tasks:
    - name: Install web server apache2 terbaru di Debian 11 node
      apt: name=apache2 state=latest
    - name: Start service apache2
      service:
          name: apache2
          state: started

    - name: Cek uptime dari remote host
      shell: uptime
      register: command_output

    - debug:

             var: command_output.stdout_lines

Sekarang eksekusi / jalankan playbook file menggunakan perintah berikut.

sudo ansible-playbook -i ~/.hosts playbook.yaml -K


Akhirnya kita berhasil install Apache2 di managed node : node2. 
Keterangan : 
- ansible-playbook = perintah untuk mengekseskusi ansible playbook.

- playbook.yaml = file playbook berisi infomasi mengenai hosts dan task yang akan di jalankan di managed nodes.
-K / --ask-become-pass = argument tambahan agar menampilkan pertanyaan untuk melakukan privileges escalation password (memasukan password user sudo).

Selanjutnya kita bisa cek status service Apache2 di managed nodes menggunakan perintah ansible berikut.

sudo ansible -i ~/.hosts -m shell -a "systemctl status apache2" node2


Terakhir kita cek apakah web server di node 2 bisa diakses menggunakan curl

curl http://172.30.20.5

Kesimpulan

Selamat kamu sudah berhasil melakukan instalasi dan bekerja menggunakan ansible. Namun panduan ini adalah panduan praktis, untuk bisa lebih memahami ansible secara mendalam kamu masih butuh banyak membaca dan bereksperimen menggunakan tugas-tugas (tasks) yang lebih kompleks. Tetap semangat !!!

Sumber referensi :

https://computingforgeeks.com/install-and-use-ansible-on-debian-linux/?expand_article=1


Post a Comment

0 Comments