Hello Semua. Pada kesempatan kali ini, Saya akan melanjutkan Ansible Tower LAB pada artikel sebelumnya ANSIBLE TOWER – LAB Bagian 1 : Setup Devices. Di LAB sebelumnya, kita sudah menyiapkan perangkat LAB dan membuat inventory berdasarkan data yang ada. Kali ini kita akan melanjutkan untuk membuat sebuah Project. Project pada Ansible Tower merupakan tempat dimana Playbook berada.

Berbeda dengan inventory yang sudah dibuat secara grafis, Playbook pada Tower belum bisa diinput secara grafis. Tetapi di Tower menawarkan lebih banyak fitur untuk menyimpan Playbook di sebuah Source Control Manager (SCM). SCM diantaranya Manual, Git, Mercurial, Subversion dan Redhat Insight. Jika Anda memilki Source Control yang sering dipakai, misalnya Github, Anda bisa menambahkannya dengan SCM tipe Git. Tetapi jika Anda belum familiar dengan beberapa Type SCM tersebut, Anda bisa menggunakan tipe Manual untuk membuat Project pada Mesin lokal Ansible Tower.

Untuk membuat SCM dengan tipe Manual, anda bisa mengikuti langkah-langkah berikut:

Langkah 1 : Buat Folder Project

Untuk membuat folder project pada Tower, kita harus mengurangi kebiasaan ketika membuat folder projek di Ansible Core. Misalnya dalam Ansible Core, playbook di simpan pada sebuah direktori yang letaknya bisa kita sesuaikan. Sedangkan di Ansible Tower, playbook harus disimpan pada di rektori /var/lib/awx/projects/. Selain itu, di Ansible Core kita bisa menyimpan data untuk push dan pull dalam satu folder dengan playbook. Sedangkan di Tower, kita harus memisahkan Folder Projcet untuk playbook dan untuk Data.

1. Anda bisa memulai dengan membuka terminal / cmd anda untuk ssh ke server Ansibe Tower. Jika sudah berhasil masuk, pindah ke folder /var/lib/awx/projects/.

ssh [email protected]
cd /var/lib/awx/projects/

2. Kemudian buat sub folder project untuk memisahkan playbook sesuai kebutuhan. Misalnya disini saya membuat folder dengan nama network_logsheha/ untuk playbook yang ditujukan untuk mengelola perangkat network. Jika sub folder sudah dibuat, pindah ke folder tersebut.

mkdir network_logsheha
cd network_logsheha/

3. Agar folder project terdeteksi di Ansible Tower, kita harus menambahkan minimal 1 playbook. Saya sudah menyiapkan playbook sederhana untuk mengkonfigurasi hostname pada masing-masing perangkat. Masih di folder network_logsheha/, buat file dengan nama network_hostname dan masukkan kode berikut:

---
- name: Change hostname device
  hosts: network_devices
  gather_facts: no

  tasks:
    - name: Change hostname device for ios
      ios_config:
        lines: hostname {{ inventory_hostname }}
        save_when: modified
      when: ansible_network_os == 'ios'

    - name: Change hostname device for eos
      eos_config:
        lines: hostname {{ inventory_hostname }}
        save_when: modified
      when: ansible_network_os == 'eos'

    - name: Change hostname device for junos
      junos_config:
        lines: set system host-name {{ inventory_hostname }}
        confirm_commit: yes
      when: ansible_network_os == 'junos'

Keterangan :

  • hosts: network_devices – menunjukan perangkat yang akan kita kelola, dimana network_devices adalah group yang terdiri dari switch dan router (Lihat LAB Bagian 1).
  • when: – Module when digunakan untuk menyatakan kondisi. Kondisi disini adalah ansible_network_os == , yang berarti Task hanya akan di jalankan apabila sistem operasi network dari perangkat memenuhi sebuah nilai. Dan nilai dari kondisi tersebut adalah ‘ios’, ‘eos’, dan ‘junos’. Perangkat yang tidak memenuhi ketiga nilai diatas, akan di lewatkan dari Task.
  • save_when: modified dan confirm_commit: yes – untuk menyimpan konfigurasi yang sudah di jalankan.

Langkah 2 : Buat Project Baru

Folder project dan 1 playbook sudah ditambahkan untuk memenuhi syarat agar folder bisa terdeteksi di Ansible Tower. Langkah selanjutnya adalah membuat Project pada Ansible Tower.

1. Buka Browser anda, masukkan url Asible Tower, lalu login.

2. Setelah masuk dashboard, pindah ke menu Projects. Buat Project baru dengan menekan tombol ( + ) berwarna hijau di kanan atas.

3. Setelah form pembuatan project muncul, isikan informasi berikut:

  • Name, Isikan nama untuk Project yang akan dibuat.
  • SCM Type, klik dropdown, pilih Manual.
  • Playbok Directory, pilih folder yang tadi sudah dibuat sebelumnya.
  • Klik Save jika semuanya sudah terisi.

Berikut tampilan projects setelah di tambahkan.

Langkah 3 : Menjalankan Playbook

Kita sudah mengkonfigurasi Inventory dan Project, langkah selanjutnya adalah menjalankan Playbook pada Project yang sudah kita buat. Untuk memulainya kita perlu pindah ke menu Templates. Menu templates berisi job template, yang setiap job nya mendefinisikan Inventory dan Project yang akan digunakan.

1. Dari menu Projects, pindah ke menu Templates. Buat job template baru dengan menekan tombol ( + ) berwarna hijau di kanan atas dan pilih job template.

2. Setelah form job tempate muncul, isikan informasi berikut:

  • Name, isikan Name sesuai job yang ingin kita buat, misalnya Network Hostname
  • Job Type, pilih Run
  • Inventory, pilih nama inventory yang sudah dibuat. Klik tombol cari, kemudian pilih logsheha_lab.
  • Project, pilih nama project yang sudah dibuat. Klik tombol cari, kemudian pilih Network Logsheha.
  • Playbook, pilih playbook yang ingin di kerjakan. Klik dropdown, pilih network_hostname.yaml.

Note! utamakan mengisi form yang memiliki simbol bintang ( * ) di sebelah namanya.

3. Jika informasi sudah di tambahkan, klik Save lalu jalankan dengan klik Launch. Setelah itu akan muncul Console untuk monitoring job yang sedang berjalan. Tampilannya seperti berikut:

4. Berikut Output dari project yang berjalan:

Task dari IOS

Task dari EOS

Task dari Junos

Play Recap

Keterangan:

  • Seperti yang saya jelaskan di awal, ketika perangkat tidak memenuhi syarat ketika pernyataan kondisi dengan module when, maka perangkat tersebut akan di lewati / skip.
  • Status Changed berarti ada perubahan pada perangkat yang di remote.

Dari output diatas, kita tahu bahwa playbook berhasil di jalan kan dan konfigurasi hostname ke masing-masing perangkat sudah berhasil.