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
- Opensource
- Menghemat waktu
- Mengurangi bug dan error
- Powerful
- Tanpa menggunakan agen (Agentless)
- Sederhana
- 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 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
Jika sudah dibuat folder latihan3 maka dibuat 3 folder baru dan satu file
$ 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
$ touch hosts
Copy script berikut dan disesuaikan dengan ip server yang akan dikonfigurasi ke file hosts
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
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
$ 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 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
$ 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
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. Jika hendak mengambil source code nya bisa diambil disini.
Sumber
- sumber 1
- sumber 2
- sumber 3
Tidak ada komentar:
Posting Komentar