Praktik ansible jinja2
Last updated: June 5, 2020
Apa itu Jinja 2
Jinja2 adalah sebuah library template engine untuk Python yang digunakan untuk mempermudah pembuatan template file dengan menggabungkan struktur file dengan data yang akan digunakan pada file tersebut.
Dalam konteks Ansible, Jinja2 digunakan sebagai mekanisme template engine untuk menghasilkan file konfigurasi yang dibutuhkan pada host yang sedang dielola. Hal ini memungkinkan pengguna Ansible untuk membuat file konfigurasi yang lebih dinamis, yang dapat berubah sesuai dengan variabel yang didefinisikan dalam playbook Ansible.
Jinja2 sangat berguna dalam membuat file konfigurasi yang kompleks dan dapat digunakan dengan banyak format file seperti .yml, .json, .ini, .xml, dan lain-lain. Pada dasarnya, Jinja2 memungkinkan kita untuk memisahkan konfigurasi dari kode, sehingga dapat memudahkan dalam pemeliharaan dan pengaturan konfigurasi yang lebih dinamis pada infrastruktur IT.
Prasyarat
Sebelum masuk ke materi ini, pastikan sudah mengintsall ansible dan menyiapkan setidaknya 2 server 1 sebagai controller dan 1 sebagai managed server yang akan di install Apache. Saya sudah menyiapkan server dengan menggunakan Vagrant, kalian bisa ikuti di materi sebelumnya.
Membuat Working direktori
Sebelum memulai, pertama buat terlebih dahulu direktori yang akan digunakan sebagai tempat untuk menyimpan beberapa konfigurasi ansible dan konfigurasi apache.
lrmn7@ubuntu-controller:~$ mkdir ansible-jinja2
lrmn7@ubuntu-controller:~$ cd ansible-jinja2/
Membuat konfigurasi ansible
Silahkan buat konfigurasi ansible sesuai dibawah ini, pastikan usernya menyesuaikan user kalian yang sudah diberi hak akses sudo baik di controller atau managed server:
vim ansible.cfg
[defaults]
inventory = ./inventory
remote_user = lrmn7
Membuat inventory ansible
Kemudian buat inventory ansible
vim inventory
[webservers]
ubuntu-managed2
File index.html untuk Apache2
Jika sudah selanjutnya buat file yang akan digunakan untuk apache2 sebagai bukti kalau kita sudah berhasil menginstall apache2
mkdir files
cd files
echo "Hello world! This is from Ansible x Jinja2 Template." > index.html.j2
Membuat ansible playbook
Langkah terkahir adalah dengan membuat ansible playbook, disini kita menggunaka 3 module yaitu apt, copy dan service.
vim site.yml
---
- name: install and start apache2
hosts: webservers
become: true
tasks:
- name: ensure apache2 package is present
apt:
name: apache2
state: present
update_cache: yes
force_apt_get: yes
- name: restart apache2 service
service: name=apache2 state=restarted enabled=yes
- name: copy index.html
template: src=files/index.html.j2 dest=/var/www/html/index.html
Mengecek ansible playbook
Ansible playbook yang sudah kalian tulis lebih baik di cek terlebih dahulu apakah terdapat error atau tidak dengan menggunakan command dibawah ini:
ansible-playbook --syntax-check site.yml
Menjalankan ansible playbook
Jika playbook tidak ada yang error, langkah selanjutnya adalah menjalankannya
ansible-playbook -i inventory site.yml
Jika berhasil maka akan tampil seperti dibawah ini
lrmn7@ubuntu-controller:~/ansible-jinja2$ ansible-playbook -i inventory site.yml
PLAY [Install & Start apache2 menggunakan Jinja2 Template] *********************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************
ok: [ubuntu-managed2]
TASK [ensure apache2 package is installed or present] **************************************************************************************************
changed: [ubuntu-managed2]
TASK [restart apache2 service] *************************************************************************************************************************
changed: [ubuntu-managed2]
TASK [copy index.html.j2 template] *********************************************************************************************************************
changed: [ubuntu-managed2]
PLAY RECAP *********************************************************************************************************************************************
ubuntu-managed2 : ok=4 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Mengecek Apache2 di Managed Server
Jika ansible sudah dijalankan maka tertulis changed di ubuntu managed2 untuk task install dan copy, itu berarti bisa saja apache sudah diinstall dan file index.html.j2 sudah di copy ke folder configurasi apache2. Langkah selanjutnya cek managed servernya.
curl ubuntu-managed2
Jika tampil seperti dibawah, maka kita telah berhasil menginstall apache2 menggunakan ansible.
lrmn7@ubuntu-controller:~/ansible-jinja2$ curl ubuntu-managed2
Hello world! This is from Ansible x Jinja2 Template.
Kita juga dapat melakukan port forwarding ubuntu-managed2 untuk melihatnya di laptop host kita dengan membukanya di browser, caranya sudah dituliskan di artikel sebelumnya.