Ansible adalah sebuah platform open-source yang digunakan untuk otomatisasi tugas-tugas IT, manajemen konfigurasi, dan penyampaian aplikasi. Dikembangkan oleh Ansible, Inc. (sekarang dimiliki oleh Red Hat), Ansible memberikan cara yang sederhana dan efisien untuk mengotomatisasi berbagai aspek pengelolaan sistem dan infrastruktur.
Berikut beberapa konsep kunci dalam Ansible:
Playbook: Ansible menggunakan konsep "playbook" untuk mendefinisikan serangkaian langkah-langkah yang harus diambil pada satu atau lebih host. Playbook ditulis dalam format YAML (YAML Ain't Markup Language) yang mudah dibaca dan ditulis.
Contoh sederhana playbook Ansible:
---------------------------------------------------------------------------------
- name: Contoh Playbook hosts: target_host tasks: - name: Install Apache apt: name: apache2 state: present - name: Start Apache Service service: name: apache2 state: started
- ---------------------------------------------------------------------------------
Inventory: Inventory adalah file yang berisi daftar host yang akan dielola oleh Ansible. Ini bisa berupa alamat IP atau nama host. Inventory memungkinkan Anda mengelompokkan host dan memberikan variabel konfigurasi khusus untuk setiap grup host.
Contoh file inventory:
----------------------------------------------------------------------------------
[web_servers] server1.example.com server2.example.com [database_servers] db1.example.com
- ----------------------------------------------------------------------------------
Modul: Modul adalah unit eksekusi Ansible yang melakukan tugas tertentu pada host yang ditentukan. Modul dapat mencakup tugas seperti instalasi perangkat lunak, pengelolaan pengguna, pengaturan file konfigurasi, dan lainnya. Ansible menyediakan berbagai modul yang dapat digunakan secara bawaan atau pengguna dapat menulis modul kustom mereka sendiri.
Contoh modul Ansible:
-----------------------------------------------------------------------------------
- name: Ensure Nginx is installed apt: name: nginx state: present
- -----------------------------------------------------------------------------------
Roles: Roles adalah cara untuk mengorganisir dan mendekomposisi playbook menjadi bagian yang lebih kecil dan mudah dikelola. Roles memungkinkan pemisahan tugas dan pengelolaan konfigurasi yang lebih modular.
Struktur dasar roles:
-------------------------------------------------------------------------------------
roles/ ├── common/ │ ├── tasks/ │ │ └── main.yml │ └── handlers/ │ └── main.yml └── webserver/ ├── tasks/ │ └── main.yml └── handlers/ └── main.yml
- -------------------------------------------------------------------------------------
- Faktor (Facts): Ansible mengumpulkan informasi tentang sistem yang dikelola, seperti spesifikasi perangkat keras, sistem operasi, dan variabel lingkungan lainnya. Informasi ini disebut "fakta" (facts) dan dapat digunakan dalam playbook untuk membuat keputusan berdasarkan kondisi sistem yang sedang dielola.Ansible menggunakan SSH untuk berkomunikasi dengan host, tidak memerlukan pemasangan agen di host yang dikelola, dan berusaha untuk membuat otomatisasi infrastruktur menjadi sederhana dan mudah dipahami. Kelebihan ini membuat Ansible menjadi pilihan populer dalam otomatisasi IT dan manajemen konfigurasi.
Berikut adalah langkah-langkah umum untuk menerapkan Ansible dalam pengelolaan konfigurasi dan otomatisasi tugas-tugas IT. Penerapan ini melibatkan instalasi Ansible, penyusunan playbook sederhana, dan eksekusi playbook tersebut pada host yang ditargetkan.
Langkah 1: Instalasi Ansible
Instal Ansible pada Mesin Pengendali:
Ansible dapat diinstal pada mesin pengendali, yang akan digunakan untuk mengelola host lainnya. Install Ansible sesuai dengan sistem operasi yang Anda gunakan. Contoh untuk Ubuntu:
-----------------------------------------------------------------------------------------
sudo apt update sudo apt install ansible
- -----------------------------------------------------------------------------------------
Verifikasi Instalasi:
Pastikan Ansible terinstal dengan menjalankan perintah:
-----------------------------------------------------------------------------------------
ansible --version
- ----------------------------------------------------------------------------------------
Langkah 2: Penyiapan File Inventory
Buat file
inventory
untuk menyimpan daftar host yang akan dikelola oleh Ansible. File ini dapat berupa file teks biasa atau file YAML. Contoh fileinventory
:---------------------------------------------------------------------------------------
[web_servers] server1.example.com server2.example.com
- --------------------------------------------------------------------------------------
Langkah 3: Membuat Playbook Ansible
Buat playbook Ansible dalam format YAML. Misalkan kita ingin menginstal dan mengonfigurasi Nginx pada host yang ditentukan. Buat file
webserver.yml
:-------------------------------------------------------------------------------------
- name: Install and Configure Nginx hosts: web_servers become: true # Menjalankan tugas sebagai superuser (sudo) tasks: - name: Install Nginx apt: name: nginx state: present - name: Start Nginx Service service: name: nginx state: started
- -----------------------------------------------------------------------------------
Langkah 4: Menjalankan Playbook Ansible
Jalankan playbook Ansible menggunakan perintah
ansible-playbook
:------------------------------------------------------------------------------------
ansible-playbook -i inventory webserver.yml
- -----------------------------------------------------------------------------------
Perintah di atas akan membaca file
inventory
dan menjalankan tugas yang didefinisikan dalam playbookwebserver.yml
pada host yang termasuk dalam grupweb_servers
.Langkah 5: Verifikasi Hasil
Setelah playbook dijalankan, periksa host yang ditargetkan untuk memastikan bahwa Nginx telah diinstal dan diaktifkan. Anda juga dapat memeriksa output playbook untuk mengetahui apakah tugas-tugas telah berhasil dijalankan.
Ini adalah langkah-langkah dasar untuk menerapkan Ansible. Untuk proyek yang lebih besar, Anda mungkin ingin membagi playbook menjadi roles, menyusun playbook yang lebih kompleks, dan menangani variabel-variabel dengan lebih rinci. Ansible menyediakan dokumentasi yang kaya dan komunitas yang aktif untuk membantu Anda mengeksplorasi lebih banyak fitur dan konsep yang diberikan oleh platform ini.
- Referensi :
- https://www.freecodecamp.org/news/what-is-ansible/
- https://medium.com/@wintonjkt/ansible-101-getting-started-1daaff872b64
- https://www.ansible.com/blog/edge-automation-with-netgitops-on-red-hat-ansible-automation-platform-2
- https://docs.ansible.com/ansible/latest/getting_started/index.html