Configuration Management Dasar Menggunakan Ansible (Bagian 1)

Jika dalam keseharian pekerjaan kita berhubungan dengan infrastruktur sistem/jaringan/aplikasi, mungkin kita tidak asing dalam konfigurasi server. Namun, mungkin sering juga kita jumpai pekerjaan yang sifatnya berulang atau repetisi. Kemudian hal ini kita lakukan secara masif ke banyak perangkat.

Mungkin jika hanya 1 atau 2 perangkat, hal ini tidak akan terlalu menghambat pekerjaan. Namun, bagaimana jika hal ini perlu kita lakukan ke banyak perangkat. Misalkan harus menyiapkan infrastrukur atau konfigurasi server yang jumlahnya sudah puluhan bahkan ratusan dan sifatnya berulang.

Pada artikel kali ini, saya akan mencoba membagikan solusi dari kendala tersebut. Dengan banyaknya tools atau alat IT automation atau Configuration Management atau Infrastucture Provisioning saat ini, kita cukup terbantu jika menggunakan bantuan dari tools tersebut.

Di artikel ini, saya akan mencoba membagikan dasar dasar Configuration Management menggunakan Ansible. Sekilas tentang Ansible, dikutip dari Dokumentasi Ansible. Ansible merupakan IT automation tool yang berfungsi untuk konfigurasi sistem, deploy software atupun untuk orkestrasi pekerjaan pekerjaan sistem lainnya. Ansible juga mendukung banyak pilihan Ansible Module yang berisi bermacam macam koleksi modul untuk konfigurasi bermacam macam perangkat sistem/server/jaringan.

Konfigurasi di artikel ini meliputi:

  • Instalasi awal Ansible
  • Konfigurasi dasar Ansible
  • Melakukan pekerjaan/task sederhana menggunakan metode ad-hoc

Topologi yang digunakan adalah terdapat total 3 buah nodes server. node1 akan bertindak sebagai control plane dimana Ansible terinstall di node ini. Kemudian akan ada node2 dan node3 yang bertindak sebagai child node dimana nantinya konfigurasi akan diteruskan atau di-push ke node node tesebut.

Image

Skenarionya adalah dari control plane node akan melakukan instalasi aplikasi, namun semua diatur atau dikontrol langsung dari control plane node dan secara paralel konfigurasi akan berjalan ke semua node

Lingkungan sistem yang saya gunakan adalah 3 node AWS EC2 Instance yang berjalan menggunakan sistem operasi Ubuntu 20.04. Metode instalasi Ansible menggunakan metode instalasi via pip (Python package manager). Versi Python yang digunakan adalah versi 3.8.5

Berikut langkah-langkah konfigurasinya:

  1. Saya akan mulai dengan membuat virtual environment

     virtualenv demo-ansible 
    

    Image

  2. Kemudian saya aktivasi virtual environment dan melakukan instalasi ansible via pip package manager

     cd demo-ansible
     source bin/activate
     cd lib/python3.8/site-packages
     pip3 install ansible
    

    Image

  3. Selanjutnya verifikasi bahwa ansible sudah berhasil terinstall

     ansible --version
    

    Image

  4. Sesuai dokumentasi Ansible, secara default Ansible menggunakan SSH untuk berinteraksi atau sebagai media transportnya. Pastikan SSH ke node node yang bertindak sebagai child node berhasil. Karena di artikel ini saya menggunakan media AWS EC2 Instance sebagai node, pastikan saat SSH ke nodes sudah menginformasikan key-pair yang digunakan

    Image
    Image

  5. Selanjutnya adalah membuat folder yang berisi konfigurasi-konfigurasi Ansible. Kemudian membuat file yang berisi informasi atau inventory dari nodes/hosts

     mkdir demo-ansible
     cd demo-ansible/
     touch hosts
    

    Image

  6. Konfigurasi file hosts yang sudah dibuat. Pada contoh ini saya masukkan node-node yang akan dikonfigurasi dan menginformasikan control node sebagai local

     # hosts
     
     [nodes]
     node2 ansible_host=172.16.0.223
     node3 ansible_host=172.16.0.216
     
     [local]
     control ansible_connection=local
    

    Image

  7. Selanjutnya adalah membuat Ansible config file

     touch ansible.cfg
    

    Image

  8. Pada ansible.cfg, saya berikan informasi konfigurasi dasar terkait default inventory file, default remote_user, default private_key dan tidak melakukan pengecekan host_key

     #ansible.cfg  
     
     [defaults]  
     inventory = ./hosts
     remote_user = ubuntu
     private_key_file = ~/keypair.pem
     host_key_checking = False
    

    Image

  9. Selanjutnya kita dapat memastikan apakah konfigurasi dasar sudah berjalan. Mulailah dengan melihat daftar hosts. Pastikan hasilnya sudah mencatumkan seluruh hosts yang dikonfigurasi di inventory file

     ansible --list-hosts all
    

    Image

  10. Selanjutnya kita dapat mulai melakukan task atau pekerjaan yang diinginkan. Command-command pada task mengacu atau refer ke dokumentasi module Ansible di atas Ansible Module. Saya akan coba mulai dengan module ping ke seluruh hosts.

    ansible -m ping all
    

    Selain itu kita juga bisa mereferensikan host-host tertentu pada command

    ansible -m ping nodes
    

    Image

  11. Selanjutnya saya akan mencoba menjalankan command dari module shell, untuk mendapatkan informasi terkait uptime tiap hosts dan informasi hostname tiap hosts.

    ansible -m shell -a "uptime" all
    
    ansible -m shell -a "hostnamectl" all
    

    Image

  12. Contoh selanjutnya adalah saya akan coba install nginx pada tiap host namun hanya hosts pada kategori nodes (node2 dan node3). Di Ansible, jika memerlukan sudo access kita dapat mereferensikan command –become

    ansible -m shell -a "apt update" --become nodes
    

    Image

    ansible -m shell -a "yes | apt install nginx-full" --become nodes
    

    Image

  13. Selanjutnya pastikan nginx sudah berhasil terinstall di node2 dan node3 tanpa kita harus instalasi manual ke kedua node tersebut

    nginx -v
    

    Image

Dari contoh di atas, kita sudah dapat mensimulasikan dasar dasar configuration management menggunakan Ansible. Namun masih terjadi sedikit hambatan, task task di atas masih dilakukan secara baris per baris karena menggunakan metode ad-hoc. Bagimana jika kita memiliki kumpulan baris baris command namun kita ingin hanya dengan menjalankan 1 kali instruksi, semua task tersebut dapat berjalan. Hal itu dapat dimungkinkan dengan bantuan Ansible Playbook.

Contoh penggunaan atau konfigurasi menggunakan Ansible Playbook, Insya Allah akan saya coba simulasikan di blog berikutnya atau Bagian 2.

Demikian contoh konfigurasi Configuration Management dasar menggunakan Ansible pada artikel ini.
Semoga bermanfaat.

Iklan

Satu respons untuk “Configuration Management Dasar Menggunakan Ansible (Bagian 1)

Add yours

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Situs yang Didukung WordPress.com.

Atas ↑

%d blogger menyukai ini: