Rabu, 18 September 2024

Otomasi Konfigurasi Server dengan Ansible

Apa itu Ansible?

Menurut wikipedia, Ansible adalah rangkaian perangkat lunak yang memungkinkan infrastruktur sebagai kode. Perangkat lunak ini bersifat sumber terbuka dan rangkaian perangkat lunak ini mencakup penyediaan perangkat lunak, manajemen konfigurasi, dan fungsionalitas penerapan aplikasi.

Awalnya ditulis oleh Michael DeHaan pada tahun 2012, dan diakuisisi oleh Red Hat pada tahun 2015, Ansible dirancang untuk mengonfigurasi sistem mirip Unix dan Microsoft Windows. Ansible tidak menggunakan agen, bergantung pada koneksi jarak jauh melalui SSH atau Windows Remote Management yang memungkinkan eksekusi PowerShell. Node kontrol Ansible berjalan pada sebagian besar sistem mirip Unix yang dapat menjalankan Python, termasuk Windows dengan Subsistem Windows untuk Linux yang terinstal.

Ansible ini tidak bergantung pada software agent sehingga dapat dengan mudah diterapkan. Instruksi yang dituliskan dalam ansible bersifat human-readable, karena menggunakan YAML sebagai intruksinya, sehingga tidak membutuhkan skill programing khusus untuk menggunakannya

Manfaat Menggunakan Ansible

  1. Opensource
  2. Menghemat waktu
  3. Mengurangi bug dan error
  4. Powerful
  5. Tanpa menggunakan agen (Agentless)
  6. Sederhana
  7. Infrastucture as a code

Instalasi

Skenario yang dipakai seperti gambar berikut


Untuk kebutuhan ini semua dilakukan dalam virtualisasi dengan spesifikasi

Control Node

  • vCPU 2 core
  • vRAM 4 Gb
  • Storage 20 Gb
  • OS ubuntu 22.04

Di control node ini akan diinstal Ansible dengan cara

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible

Konfigurasi dan Best Practice Penggunaan

Setelah diinstall Ansible pada server Control Node ini, langkah awal adalah menyiapkan folder atau buat folder baru di dalam home directory misal kita buat dengan nama latihan3

$ mkdir latihan3

Jika sudah dibuat folder latihan3 maka dibuat 3 folder baru dan satu file

$ mkdir inventory
$ mkdir playbooks
$ mkdir roles
$ touch ansible.cfg

Untuk membuat skenario diatas, maka perlu didefiniskan server mana saja yang akan dilakukan konfigurasi. Server-server tersebut perlu didefiniskan baik hostname maupun ipnya di bagian inventory. Langkah yang dilakukan sebagai berikut

$ cd inventory
$ touch hosts

Copy script berikut dan disesuaikan dengan ip server yang akan dikonfigurasi ke file hosts

[golang]
golang-1    ansible_ssh_host=x.x.x.x
golang-2    ansible_ssh_host=x.x.x.x

[all:vars]
ansible_connection=ssh
ansible_user=root
ansible_python_interpreter=/usr/bin/python3

Kemudian copy script berikut kedalam file ansible.cfg

[defaults]

roles_path = ./roles
playbook_path = ./playbooks
host_key_checking = False
retry_files_enabled = False

Masuk ke folder roles untuk membuat roles dengan menggunakan perintah ansible galaxy

$ cd roles
$ ansible-galaxy init basic

Baris diatas nantinya akan membuat roles dengan nama basic di folder roles. Konfigurasi berikutnya adalah dengan masuk ke folder roles kemudian basic, dan dibagian tasks di file main.yml kita akan buat script nya.

$ cd basic
$ cd tasks

Isi file main.yml

---
# tasks file for basic
- name: 1. Check OS Distribution
  debug:
    msg: "{{ ubuntu }}"
  with_items:
    - "{{ ansible_distribution }}"
    - "{{ ansible_distribution_version }}"
    - "{{ ansible_distribution_major_version }}"
  loop_control:
    loop_var: ubuntu
  tags:
    - check_os_distribution

Untuk folder playbooks akan dibuat sebuah file main.yml juga di dalam folder basic

$ cd playbooks
$ mkdir basic
$ touch main.yml

Isikan scipt berikut di dalam file main.yml

---
- name: Basic Setup Machine
  hosts: all
  become: yes
  become_user: root
  gather_facts: yes
  roles:
    - basic


Setelah jadi seperti gambar diatas, langkah dasar konfigurasi ansible sudah selesai. Dengan desain seperti ini, ansible bisa dilakukan dimana saja, tidak perlu di satu server ansible saja. Bisa juga dipakai di pc yang sudah terinstall ansible. Untuk menjalankan ansble, perlu terlebih dahulu ke dalam folder latihan3, jika sudah bisa dijalankan sintaks berikut

$ pwd
~/latihan3
ansible-playbook -i inventory playbooks/basic/main.yml --limit golang-1 -Kk

Arti sintaks diatas adalah menjalankan ansible dengan membaca folder inventory kemudian menjalankan perintah main.yml yang ada di folder playbooks/basic dengan limit di server golang-1. Untuk -Kk disini diperlukan login masuk ke server tujuan. Hasilnya akan menjadi sebagai berikut:



Gambar diatas jika kita memanggil group dari host yang sudah kita definisikan di file host yang ada di inventory.

Sekian tulisan dari penggunaan Ansible untuk otomasi server. 

Sumber

- sumber 1

- sumber 2

- sumber 3



Tidak ada komentar:

Posting Komentar