Ansible variable
Last updated: April 21, 2020
Apa itu Ansible Playbook ?
Ansible variable adalah nilai yang diberikan kepada variabel yang digunakan dalam playbook Ansible. Variabel ini dapat digunakan untuk mengatur nilai dari modul Ansible, seperti modul package
, copy
, atau template
. Penggunaan variabel memungkinkan playbook untuk menjadi lebih fleksibel dan dapat digunakan di berbagai lingkungan dengan mudah.
Jenis Ansibel Variable
Ada beberapa jenis variabel yang dapat digunakan dalam playbook Ansible, antara lain:
-
Variabel Built-in: Variabel ini disediakan oleh Ansible secara default dan dapat digunakan tanpa harus didefinisikan secara eksplisit. Contohnya adalah variabel
inventory_hostname
, yang berisi nama host yang diatur dalam inventory Ansible. -
Variabel Dinamis: Variabel ini didefinisikan secara dinamis dalam playbook Ansible dan diisi dengan nilai yang dihasilkan oleh tugas sebelumnya. Contohnya adalah variabel
ansible_facts
, yang berisi fakta-fakta tentang host yang diatur dalam playbook. -
Variabel Pengguna: Variabel ini didefinisikan oleh pengguna dan digunakan dalam playbook Ansible. Contohnya adalah variabel
apache_port
atauapache_root
pada contoh playbook yang telah diberikan sebelumnya.
Penggunaan variabel yang tepat dapat membuat playbook Ansible menjadi lebih efektif dan efisien, serta dapat mempermudah pengaturan nilai pada modul-modul Ansible.
Penamaan Variabel
Untuk menggunakan variabel dalam playbook Ansible, pengguna dapat memanggil variabel menggunakan tanda kurung kurawal.
Waktu yang tepat menggunakan Variable
Waktu yang tepat untuk menggunakan variabel dalam Ansible adalah ketika pengguna ingin mengatur konfigurasi infrastruktur mereka secara fleksibel dan dinamis. Beberapa situasi yang umumnya memerlukan penggunaan variabel dalam Ansible adalah:
-
Konfigurasi yang berbeda untuk host yang berbeda: Ketika pengguna ingin memberikan konfigurasi yang berbeda untuk setiap host dalam inventory file, pengguna dapat menggunakan variabel untuk menyimpan nilai konfigurasi yang spesifik untuk setiap host.
-
Penggunaan playbook yang sama untuk lingkungan yang berbeda: Ketika pengguna ingin menggunakan playbook yang sama untuk lingkungan produksi dan pengembangan, pengguna dapat menggunakan variabel untuk menentukan nilai konfigurasi yang berbeda untuk setiap lingkungan.
-
Penggunaan playbook yang kompleks: Ketika pengguna menggunakan playbook yang kompleks, variabel dapat membantu memudahkan pengelolaan playbook dan menjaga kode playbook tetap terorganisir.
-
Menentukan nilai berdasarkan kondisi tertentu: Ketika pengguna ingin menentukan nilai variabel berdasarkan kondisi tertentu, seperti jenis sistem operasi atau versi perangkat lunak yang diinstal pada host, variabel dapat digunakan untuk menentukan nilai yang sesuai untuk setiap kondisi.
-
Menghindari pengulangan kode yang tidak perlu: Ketika pengguna ingin menghindari pengulangan kode yang tidak perlu dalam playbook, variabel dapat digunakan untuk menyimpan nilai yang sama dan digunakan di beberapa bagian playbook.
Dalam situasi-situasi ini, penggunaan variabel dapat membantu pengguna mengatur dan mengelola infrastruktur mereka dengan lebih mudah dan efisien. Namun, penting untuk memahami cara kerja variabel dan memastikan bahwa variabel yang digunakan sudah didefinisikan dengan benar untuk menghindari kesalahan dalam konfigurasi sistem.
Contoh Ansible Variable di Playbook
Contoh penggunaan ansible variable built-in di ansible playbook
---
- name: Contoh Playbook menggunakan Variabel Built-In Ansible
hosts: webservers
become: true
tasks:
- name: Install Apache HTTP Server
package:
name: httpd
state: present
- name: Copy Apache Config File
copy:
src: files/httpd.conf
dest: /etc/httpd/conf/httpd.conf
owner: root
group: root
mode: '0644'
notify:
- Restart Apache
handlers:
- name: Restart Apache
service:
name: httpd
state: restarted
-
hosts
: variabel ini menentukan host yang akan diatur oleh playbook. Pada contoh di atas, playbook akan dijalankan pada host dengan grupwebservers
. -
become
: variabel ini menentukan apakah pengguna ingin menggunakan akses root pada host yang diatur oleh playbook. Pada contoh di atas, variabelbecome
diatur sebagaitrue
yang berarti playbook akan dijalankan dengan akses root. -
name
: variabel ini menentukan nama tugas yang akan dilakukan oleh playbook. Pada contoh di atas, tugas pertama bernama "Install Apache HTTP Server" dan tugas kedua bernama "Copy Apache Config File". -
package
: variabel ini mengaktifkan modul Ansiblepackage
yang digunakan untuk menginstal paket pada host yang diatur oleh playbook. Pada contoh di atas, modulpackage
digunakan untuk menginstal pakethttpd
pada host. -
copy
: variabel ini mengaktifkan modul Ansiblecopy
yang digunakan untuk menyalin file ke host yang diatur oleh playbook. Pada contoh di atas, modulcopy
digunakan untuk menyalin filehttpd.conf
ke direktori/etc/httpd/conf
pada host. -
notify
: variabel ini menentukan handler yang akan dipanggil ketika tugas selesai. Pada contoh di atas, handlerRestart Apache
akan dipanggil setelah tugas kedua selesai. -
handlers
: variabel ini menentukan daftar handler yang akan dipanggil oleh playbook. Pada contoh di atas, handlerRestart Apache
akan merestart layananhttpd
pada host.
Contoh playbook Ansible yang menggunakan variabel yang didefinisikan oleh pengguna
Beberapa variabel yang didefinisikan oleh pengguna dalam playbook di atas adalah:
-
apache_port
: variabel ini menentukan port yang akan digunakan oleh Apache HTTP Server. Pada contoh di atas, variabelapache_port
diatur sebagai80
. -
apache_root
: variabel ini menentukan direktori root yang akan digunakan oleh Apache HTTP Server. Pada contoh di atas, variabelapache_root
diatur sebagai/var/www/html
. -
proxy_server
: variabel ini merupakan contoh variabel yang harus didefinisikan oleh pengguna sebelum menjalankan playbook. Variabel ini digunakan untuk mengatur nilai dari variabelhttp_proxy
danhttps_proxy
di dalam environment variable.
Contoh ansible playbook lainnya yang menggunakan variable dengan loop
Pada contoh playbook di atas, variabel required_packages
didefinisikan oleh pengguna dan berisi daftar nama paket yang harus diinstal pada host. Variabel tersebut kemudian digunakan untuk melakukan perulangan dengan menggunakan loop
pada tugas Install Required Packages. Setiap iterasi pada perulangan akan menginstal satu paket yang terdapat pada variabel required_packages
.