Skip to content

Provisioning Multiple VM dengan Ansible

mrvlvenom95 edited this page Mar 27, 2024 · 15 revisions

Overview

Kita dapat menggunakan Ansible untuk melakukan provision terhadap multiple server yang kita buat. Pada contoh di modul ini, kami menggunakan Ubuntu 20.04.6 LTS sebagai mesin utama dan nantinya pada Ubuntu tersebut akan dibuat virtualisasi dengan KVM (Kernel-based Virtual Machine) yang merupakan virtualisasi native di Linux. Dengan KVM, kita akan membuat dua virtual machine dengan OS Ubuntu.

Di sini kita akan menggunakan 3 mesin, yaitu mesin Ubuntu utama dan 2 virtual machine Ubuntu. Mesin Ubuntu utama akan menjadi host Ansible atau Control Node sedangkan 2 VM akan digunakan sebagai worker yang akan diprovisioning.

Langkah-Langkah Provision

Provision With Vagrant

1. Setup Vagrantfile

Pertama, Kalian buat direktori baru misal "test-vagrant-ansible", didalam direktori tersebut sama seperti modul sebelumnya untuk setup vagrant seperti biasa. Tetapi isi dari Vagrantfile nya contohnya seperti ini:

Vagrant.configure("2") do |config|
  config.vm.box = "generic/ubuntu2004"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = "2"
  end

  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "playbook.yaml"
  end

end

NOTE:

  • Pastikan Vagrant Boxes yang digunakan memiliki support provider "Libvirt", karena VMM hanya suppport provider Libvirt saja. Kalian bisa lihat di link: Vagrant Boxes
  1. Kemudian kalian buat file ansible di dalam direktori "playbook.yaml" Dengan isinya bisa disesuiakan dengan kebutuha. Contohnya seperti dibawah ini:
---
- hosts: all
  tasks:
    - name: Install Nginx to VM
      become: true
      apt:
        name: nginx
        state: latest
        update_cache: true
  1. Setelah itu, kalian vagrant up terlebih dahulu.
vagrant up --provider=libvirt 
  1. Kemudian jika ada perubahan di playbook.yaml ataupun di Vagrantfile kalian perlu reload vagrant nya.
vagrant reload --provision

Jika seperti gambar diatas berarti udah berhasil. Maka di VMM nya akan otomatis running seperti dibawah ini:

Untuk Step selanjutnya akan sama seperti ISO manual untuk yang di step 5. Test SSH Worker.

Provision With ISO Manual

1. Membuat Virtual Machine

Pertama, kita install terlebih dahulu VMM dan KVM dengan melihat instalasi berikut:Installasi VMM dan KVM.

Kedua, kita buat dua virtual machine dengan bantuan dari Virtual Machine Manager.

NOTE:

  • Untuk installasi virtual machine-nya seperti instalasi VM pada Virtualbox (Oracle atau VMWare).
  • Pastikan username dan password user yang dibuat di kedua vm merupakan kredensial yang sama karena akan berpengaruh pada proses SSH. Contoh: VM1 dan VM2 sama-sama memiliki user worker dengan password worker

2. Install Ansible di Control Node

Pada Control Node (Ubuntu utama) kita install Ansible terlebih dahulu sesuai intruksi pada materi sebelumnya. Lakukan juga install Ansible pada 2 virtual machine yang sudah dibuat. Installasi..

3. Membuat New Directory

Kemudian, kita buat folder baru untuk testing, misalnya dibuat dengan nama test-playbook.

mkdir test-playbook

4. Membuat Ansible Inventory

Kemudian, masuk ke folder test-playbook dan buat file inventory ansible yang dinamakan hosts dan diisi dengan.

...

all:
    vars:
         ansible_user: vagrant

hosts:
      worker:   
             ansible_host: 192.168.121.219
             ansible_ssh_private_key_file: /home/ilhanahmads/tka/.vagrant/machines/default/libvirt/private_key

Note:

  • Path file private_key sesuaikan dengan device masing-masing
  • IP Config VM 1 dan 2 bisa melihat GUI pada Virtual Machine Manager (VMM) seperti foto dibawah ini:

5. Tes SSH di Worker

Kemudian, coba lakukan ping ke VM worker untuk mengetahui apakah ssh dapat terhubung atau tidak.

ansible -i ./hosts -m ping all -k

Kemudian, masukkan password login ssh, yaitu worker

KETERANGAN:

  • Parameter -i untuk mendeclare ansible inventory
  • Parameter -m untuk mendeclare module command
  • Parameter -k untuk menanyakan password login ssh
  • Parameter all untuk penanda ansible dijalankan pada semua host. all dapat diganti juga dengan nama host sesuai keinginan.

NOTE:

  • Apabila ada error Unreachable, pada tiap worker perlu diinstall openssh-server dan aktifkan port 22 pada setiap worker. Instalasi dapat dilihat di sini Installasi OpenSSH Ubuntu dan Installasi OpenSSH Kali.
  • Apabila ada error Please add host's fingerprint ..., silakan untuk cobe koneksi ssh manual terlebih dahulu untuk tiap worker dengan ssh worker@IP untuk menyimpan fingerprintnya pada machine utama.

6. Install Package di Worker

Kemudian, kita membuat playbook sederhana dengan nama install-package.yaml untuk menginstall lynx pada worker

- hosts: worker
  tasks:
    - name: Install Lynx
      become: true
      apt:
        name: lynx
        state: latest
        update_cache: true    

Kemudian, jalankan perintah berikut ini untuk menjalankan playbook.

ansible-playbook -i hosts install-package.yaml -k

7. Buat Directory dan File Baru di Worker

Terakhir, kita coba untuk membuat folder baru di kedua VM worker. File playbook untuk ini kita namakan newfile.yaml

- hosts: worker
  tasks:
    - name: Create new directory
      command: mkdir -p newdir
    - name: Create new yaml file
      command: touch newfile.yaml

Kemudian, jalankan perintah berikut ini untuk menjalankan playbook.

ansible-playbook -i hosts newfile.yaml -k

Untuk Video Lengkapnya kalian bisa mengakses link berikut: Video

Clone this wiki locally