Konfigurasi Banyak Server dengan Ansible untuk Otomatisasi Infrastruktur

Konfigurasi Banyak Server dengan Ansible untuk Otomatisasi Infrastruktur

Ansible adalah tool DevOps Infrastructure as Code (IaC) yang berfungsi sebagai configuration management dan automation platform. Ansible memungkinkan administrator sistem dan DevOps Engineer melakukan konfigurasi banyak server secara simultan, konsisten, dan otomatis tanpa perlu instalasi agent di server target.

Dengan Ansible, proses provisioning, deployment aplikasi, hingga manajemen konfigurasi server Linux dapat dilakukan secara terpusat, scalable, dan efisien. Tool ini sangat populer untuk mengelola VPS, cloud server, dan environment production.

Cara Kerja Ansible dalam Manajemen Server

Arsitektur Ansible bersifat agentless, sehingga lebih ringan dan mudah diimplementasikan. Mekanisme kerjanya sebagai berikut:

  • Control Node adalah server utama tempat Ansible diinstall dan dijalankan.

  • Managed Nodes adalah server target yang akan dikonfigurasi.

  • Komunikasi antara Control Node dan Managed Nodes menggunakan protokol SSH.

  • Managed Nodes tidak memerlukan instalasi software tambahan selain SSH.

  • Daftar server target disimpan dalam Inventory file berupa IP address atau hostname.

  • Perintah konfigurasi ditulis dalam Playbook menggunakan format YAML.

  • Setiap konfigurasi dijalankan dalam bentuk Task, dan setiap task menggunakan Ansible Module seperti package, service, database, atau network.

Pendekatan ini menjadikan Ansible ideal untuk automation server, configuration management, dan deployment aplikasi.

Tutorial Environment Ansible

Pada tutorial ini, environment yang digunakan adalah sebagai berikut:

  • Control Node: Ubuntu 20.04

  • Managed Nodes: 2 VPS Ubuntu 20.04

  • Server Web: 178.128.55.175

  • Server Database: 165.22.102.165

  • Versi Ansible: 2.12.6

Konfigurasi SSH Key untuk Ansible

Agar Ansible dapat mengakses Managed Nodes secara aman, digunakan SSH key-based authentication.

Membuat SSH Key di Control Node

ssh-keygen

Contoh lokasi penyimpanan SSH key:

/home/musa/.ssh/ansible

Mengirim SSH Key ke Managed Nodes

ssh-copy-id -i ~/.ssh/ansible root@178.128.55.175 ssh-copy-id -i ~/.ssh/ansible root@165.22.102.165

Uji Koneksi SSH

ssh -i ~/.ssh/ansible root@178.128.55.175 ssh -i ~/.ssh/ansible root@165.22.102.165

Jika berhasil login tanpa password, maka SSH key sudah siap digunakan oleh Ansible.

Install Ansible di Ubuntu

Install Ansible menggunakan repository resmi untuk mendapatkan versi stabil terbaru.

sudo apt update sudo apt install software-properties-common -y sudo add-apt-repository --yes --update ppa:ansible/ansible sudo apt install ansible -y

Untuk sistem operasi lain, silakan merujuk dokumentasi resmi Ansible.

Konfigurasi Inventory Ansible

Inventory berfungsi sebagai daftar Managed Nodes yang akan dikontrol Ansible.

Membuat Direktori Project Ansible

mkdir ansible cd ansible

Membuat File Inventory

nano inventory

Isi file inventory:

[all:vars] ansible_user=root ansible_ssh_private_key_file=/home/musa/.ssh/ansible [webserver] 178.128.55.175 [database] 165.22.102.165

Penjelasan:

  • ansible_user menentukan user SSH yang digunakan.

  • ansible_ssh_private_key_file menentukan SSH key.

  • Group webserver dan database memudahkan segmentasi server.

Verifikasi Inventory

ansible-inventory -i inventory --list

Test Koneksi ke Semua Host

ansible -i inventory all -m ping

Jika seluruh host merespons pong, koneksi Ansible sudah siap.

Membuat Playbook Ansible

Playbook digunakan untuk mendefinisikan seluruh konfigurasi server secara terstruktur.

Membuat File Playbook

nano playbook.yml

Isi File playbook.yml

- hosts: all tasks: - name: Update apt cache apt: update_cache: yes - hosts: webserver tasks: - name: Install Nginx dan PHP apt: pkg: - nginx - php-fpm - php-common - hosts: database tasks: - name: Install MariaDB apt: name: - mariadb-server - python3-mysqldb - name: Membuat database db_app mysql_db: name: db_app state: present - name: Membuat user database mysql_user: name: user_app password: rahasia priv: 'db_app.*:ALL' state: present - name: Set password root MariaDB mysql_user: name: root password: rahasia state: present

Playbook ini akan:

  • Update repository di semua server

  • Install Nginx dan PHP di server web

  • Install MariaDB di server database

  • Membuat database dan user MySQL secara otomatis

Menjalankan Playbook Ansible

ansible-playbook -i inventory playbook.yml

Ansible akan mengeksekusi seluruh task secara otomatis dan menampilkan ringkasan hasil eksekusi pada setiap server.

Pengujian Hasil Konfigurasi

Cek Web Server

systemctl status nginx systemctl status php7.4-fpm

Akses melalui browser:

http://IP-Webserver

Cek Database Server

mysql -u root -p show databases; exit

Login menggunakan user aplikasi:

mysql -u user_app -p show databases; exit

Jika database dan user berhasil dibuat, maka konfigurasi Ansible sukses.

Kesimpulan

Ansible adalah solusi automation dan configuration management yang sangat efektif untuk mengelola banyak server Linux sekaligus. Dengan pendekatan Infrastructure as Code, Ansible membantu meningkatkan efisiensi operasional, mengurangi human error, dan mempercepat deployment aplikasi di lingkungan cloud dan VPS production.

Artikel ini menjadi fondasi penting sebelum melangkah ke topik lanjutan seperti Ansible Roles, Ansible Vault, CI/CD Automation, dan Security Hardening Server Linux.