Ansible adalah alat otomatisasi tanpa agen (agentless) yang diinstal pada satu host sebagai control node. Dari control node ini, Ansible dapat mengelola banyak server lain (managed nodes) yang telah ditentukan dalam inventory melalui koneksi jarak jauh (umumnya SSH).
Catatan: Semua eksekusi pada panduan ini dilakukan sebagai user biasa. Tidak direkomendasikan menjalankan Ansible sebagai root kecuali untuk kebutuhan tertentu.
1. Memastikan pip tersedia
#
Pastikan Python 3 sudah terinstal.
python3 -m pip -V
Contoh output:
pip 23.0.1 from /usr/local/lib/python3.11/site-packages/pip (python 3.11)
Jika pip belum tersedia, instal sesuai OS Anda (misalnya melalui apt install python3-pip, dnf install python3-pip, atau brew install python3 di macOS).
2. Instalasi Ansible (User Mode) #
Instal Ansible menggunakan pip sebagai user:
python3 -m pip install --user ansible
3. Upgrade Ansible #
python3 -m pip install --upgrade --user ansible
4. Verifikasi Instalasi #
ansible --version
Jika perintah di atas menghasilkan error seperti command not found, biasanya direktori bin Python user belum masuk ke PATH.
5. Perbaikan PATH (jika Ansible tidak terdeteksi)
#
Cek lokasi instalasi Ansible:
python3 -m pip show ansible
Contoh output:
Name: ansible
Version: 7.5.0
Summary: Radically simple IT automation
Home-page: https://ansible.com/
Author: Ansible, Inc.
Author-email: info@ansible.com
License: GPLv3+
Location: /Users/myuser/Library/Python/3.11/lib/python/site-packages
Requires: ansible-core
Required-by:
Direktori bin biasanya berada pada:
/Users/myuser/Library/Python/3.11/bin
Tambahkan ke PATH:
export PATH=$PATH:/Users/myuser/Library/Python/3.11/bin
Untuk membuatnya permanen, tambahkan baris tersebut pada file:
~/.bashrcatau~/.bash_profile(bash)~/.zshrc(zsh)
6. Membuat Inventory Dasar #
Ansible membaca target server dari file bernama inventory (default: /etc/ansible/hosts), tetapi Anda bisa membuat file sendiri, misalnya inventory.ini.
Contoh inventory.ini:
#
[web]
192.168.1.10
192.168.1.11
[db]
192.168.1.20
[all:vars]
ansible_user=myuser
ansible_ssh_private_key_file=~/.ssh/id_rsa
Struktur dasar: #
- Group →
[web],[db], dll. - Host → IP atau hostname
- Variables → autentication dan konfigurasi lainnya
Anda bisa menguji koneksi ke semua host:
ansible -i inventory.ini all -m ping
7. Menjalankan Ad-Hoc Command #
Ad-hoc command cocok untuk tugas cepat tanpa menulis playbook.
Ping semua host #
ansible -i inventory.ini all -m ping
Menjalankan perintah shell pada group web
#
ansible -i inventory.ini web -m command -a "uptime"
Copy file #
ansible -i inventory.ini web -m copy -a "src=/tmp/file.txt dest=/tmp/file.txt"
Restart service #
ansible -i inventory.ini web -m service -a "name=nginx state=restarted"
Menjalankan perintah dengan become
#
ansible -i inventory.ini db -b -m command -a "systemctl status mariadb"
8. Contoh Playbook Pertama #
Playbook memungkinkan Anda membuat otomatisasi berurutan dalam format YAML.
Buat file first-playbook.yml:
---
- name: Install dan start Nginx
hosts: web
become: true
tasks:
- name: Install package nginx
ansible.builtin.package:
name: nginx
state: present
- name: Ensure nginx is running
ansible.builtin.service:
name: nginx
state: started
enabled: true
Menjalankan playbook: #
ansible-playbook -i inventory.ini first-playbook.yml