Cara Melakukan Konfigurasi Ansible pada FreeBSD 14

· 2 min read

Ansible adalah perangkat lunak yang menyediakan otomatisasi sederhana namun canggih untuk dukungan komputer dengan berbagai macam sistem operasi. Pera

Ansible adalah perangkat lunak yang menyediakan otomatisasi sederhana namun canggih untuk dukungan komputer dengan berbagai macam sistem operasi. Perangkat lunak ini terutama ditujukan untuk para profesional TI, yang menggunakannya untuk penerapan aplikasi, pembaruan ke stasiun kerja dan server, penyediaan cloud, manajemen konfigurasi, orkestrasi intra-layanan, dan hampir semua aktivitas yang dilakukan administrator sistem setiap jam, setiap hari, atau setiap minggu. Ansible tidak bergantung pada perangkat lunak agen dan tidak memiliki infrastruktur keamanan tambahan, sehingga mudah diterapkan.

Misalnya, Anda memiliki 100 server dan Anda perlu menginstal konfigurasi yang sama (Apache, postgres, redis, mongodb). Dengan alat ini, hanya butuh sedikit waktu. Tidak perlu terhubung ke setiap server, menginstal dan mengonfigurasi konfigurasi untuk setiap program. Cukup tulis skrip dan skrip akan melakukan semuanya untuk Anda, di semua server.

Ada banyak tindakan dalam pekerjaan administrator sistem yang dapat diotomatisasi menggunakan perangkat lunak sistem manajemen konfigurasi khusus. Salah satunya adalah Ansible, yang dengannya Anda dapat mengotomatiskan instalasi dan konfigurasi perangkat lunak pada sejumlah mesin.

Dalam artikel ini saya akan menunjukkan cara menggunakan Ansible untuk meluncurkan komponen infrastruktur, serta untuk beberapa tugas sehari-hari.


1. Spesifikasi Sistem

OS: FreeBSD 13.2
Hostname: ns6
IP Addreess: 192.168.5.2
Ansible version: py39-ansible-8.2.0
Username: ansible

2. Mengapa menggunakan Ansible

Ansible merupakan perangkat lunak lintas platform, sehingga dapat diinstal di hampir semua sistem operasi seperti FreeBSD, Windows, Linux, dan MacOS. Perangkat lunak ini memiliki banyak keunggulan:
  • Kemudahan penggunaan. Cukup dengan satu simpul induk, yang darinya konfigurasi akan diluncurkan dalam bahasa markup YAML. Tidak perlu menginstal agen atau perangkat lunak pihak ketiga, protokol SSH digunakan untuk menghubungkan host dari jarak jauh.
  • Banyak modul yang tersedia. Ansible dilengkapi dengan berbagai modul yang memungkinkan Anda melakukan tindakan tertentu di server, berinteraksi dengan sistem operasi, mengonfigurasi jaringan, bekerja dengan file, pengguna, dan hak akses khusus.
  • Keamanan, dapat menggunakan protokol SSH, jadi tidak perlu mengambil langkah tambahan.

3. Port dan PKG Ansible

Pada FreeBSD, instalasi Ansible dapat dilakukan dengan paket PKG dan port sistem. Kita akan menggabungkan keduanya, untuk menginstal dependensi Ansible gunakan PKG dan untuk menginstal Ansible gunakan sistem port. Berikut ini adalah skrip untuk menginstal dependensi Ansible.
root@ns6:~ # pkg install python39 ansible-sshjail py39-setuptools py39-ansible-compat py39-ansible-core py39-ansible-iocage py39-ansible-runner
Gunakan port sistem FreeBSD untuk menginstal Ansible.
root@ns6:~ # cd /usr/ports/sysutils/ansible
root@ns6:/usr/ports/sysutils/ansible # make config
root@ns6:/usr/ports/sysutils/ansible # make install clean
Menginstal Ansible dengan sistem ports sangat disarankan, karena semua file library akan disertakan selama proses instalasi.

Setelah Ansible terinstal di sistem FreeBSD Anda, kita dapat melanjutkan dengan membuat folder "/usr/local/etc/ansible", dan membuat file bernama "ansible.cfg" dan "hosts" di folder tersebut.
root@ns6:~ # mkdir -p /usr/local/etc/ansible
root@ns6:~ # touch /usr/local/etc/ansible/ansible.cfg
root@ns6:~ # touch /usr/local/etc/ansible/hosts
root@ns6:~ # chmod +x /usr/local/etc/ansible/
Ketikkan script di bawah ini pada file "/usr/local/etc/ansible/ansible.cfg".
root@ns6:~ # ee /usr/local/etc/ansible/ansible.cfg
[defaults]
inventory = hosts
remote_user=ansible
dan file "/usr/local/etc/ansible/hosts".
root@ns6:~ # ee /usr/local/etc/ansible/hosts
[mybsdhosts]
ns6 ansible_python_interpreter=/usr/local/bin/python
#mediatama ansible_python_interpreter=/usr/local/bin/python


4. Buat Pengguna dan authorized_keys SSH

Pada poin 3 kita akan membuat pengguna yang dapat mengakses Ansible. Dalam contoh ini pengguna kita diberi nama "ansible", tetapi Anda dapat memilih apa pun yang Anda inginkan. Saya akan menunjukkan cara menambahkan pengguna di FreeBSD. Untuk mempelajari lebih lanjut tentang poin 3, Anda dapat membaca artikel sebelumnya.



root@ns6:~ # adduser
Username: ansible
Full name: ansible python
Uid (Leave empty for default):
Login group [ansible]:
Login group is ansible. Invite ansible into other groups? []:
Login class [default]:
Shell (sh csh tcsh git-shell bash rbash nologin) [sh]:
Home directory [/home/ansible]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password: router2
Enter password again: router2
Lock out the account after creation? [no]:
Username   : ansible
Password   : *****
Full Name  : ansible python
Uid        : 1002
Class      :
Groups     : ansible
Home       : /home/ansible
Home Mode  :
Shell      : /bin/sh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (ansible) to the user database.
Add another user? (yes/no): no
Goodbye!
Sekarang, kita menguji koneksi SSH pada pengguna ansible.
root@ns6:~ # ssh ansible@192.168.5.2
(ansible@192.168.5.2) Password: router2
ansible@ns6:~ $
Berhasil!
Kami dapat masuk ke sistem tanpa perlu memasukkan frasa sandi.

Ansible dapat mengeluarkan perintah ad-hoc dari baris perintah ke sistem jarak jauh. Contoh sederhana untuk menunjukkan fungsionalitas Ansible adalah menggunakan modul ping untuk memverifikasi bahwa sistem target merespons:

Selanjutnya, buat kunci SSH publik authorized_keys untuk pengguna "ansible".
ansible@ns6:~ $ mkdir .ssh
ansible@ns6:~ $ cd .ssh
ansible@ns6:~/.ssh $ ssh-keygen -t rsa
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): router1
Enter same passphrase again: router1
Your identification has been saved in ansible
Your public key has been saved in ansible.pub
The key fingerprint is:
SHA256:Pa5Geb77fWsdOW8ss8D5UIDcPaXntG++q0kimfchlTk ansible@ns6
The key's randomart image is:
+--[ED25519 256]--+
|                .|
|         . o . o |
|          o o + o|
|         .   .o=.|
|        S.o  E..o|
|        o.+o.o.+.|
|       . *.+=o .B|
|        ..+ ===+*|
|       .. o+.+*X=|
+----[SHA256]-----+
ansible@ns6:~/.ssh $
ansible@ns6:~/.ssh $ cat ~/.ssh/id_rsa.pub | ssh ansible@192.168.5.2 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
The authenticity of host '192.168.5.2 (192.168.5.2)' can't be established.
ED25519 key fingerprint is SHA256:WpdCFPbgIgcvkDmCr8Cw1XWvU9Yej73honnnS34YsP8.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.5.2' (ED25519) to the list of known hosts.
(ansible@192.168.5.2) Password: router2
ansible@ns6:~/.ssh $
Kemudian, kami menggunakan ssh-add untuk menambahkan identitas kunci pribadi ke agen autentikasi.
ansible@ns6:~/.ssh $ ssh-agent sh -c 'ssh-add /usr/home/ansible/.ssh/id_rsa'
Enter passphrase for /usr/home/ansible/.ssh/id_rsa: router1
Identity added: /usr/home/ansible/.ssh/id_rsa (ansible@ns6)
ansible@ns6:~/.ssh $
Berikutnya saya membuat izin.
ansible@ns6:~ $ chown -R ansible:ansible /usr/home/ansible/.ssh
ansible@ns6:~ $ chmod 0700 /usr/home/ansible/.ssh
ansible@ns6:~ $ chmod 0600 /usr/home/ansible/.ssh/authorized_keys

5. Ansible Bootstrap Python

Seperti yang kita ketahui, satu-satunya persyaratan pada mesin target adalah versi python modern yang terinstal pada sistem FreeBSD. Namun, bagaimana jika versi python tersebut tidak terinstal pada mesin target? Anda dapat melakukannya secara manual pada beberapa mesin, tetapi bagaimana jika Anda memiliki banyak server target yang tidak memiliki python terinstal pada setiap mesin?.

Untuk mengatasi masalah ayam dan telur ini, kita dapat menggunakan metode yang berbeda untuk menjalankan perintah. Ini disebut mode mentah dan tidak memiliki abstraksi apa pun, melainkan menggunakan perintah literal:
ansible@ns6:~/.ssh $ ansible all -m ping
The authenticity of host 'ns6 (192.168.5.2)' can't be established.
ED25519 key fingerprint is SHA256:WpdCFPbgIgcvkDmCr8Cw1XWvU9Yej73honnnS34YsP8.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:1: 192.168.5.2
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Enter passphrase for key '/home/ansible/.ssh/id_rsa': router1
ns6 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
ansible@ns6:~/.ssh $
Setelah perintah tersebut berhasil dijalankan, Ansible telah sepenuhnya siap dan dapat menggunakan mode, modul, dan playbook lainnya. Untuk memastikan komunikasi antara mesin kontrol dan target terenkripsi, kami menyiapkan SSH dan bertukar kunci publik untuk login tanpa kata sandi.

Tugas umum adalah mentransfer file dari sistem lokal ke sistem jarak jauh. Ini termasuk file konfigurasi, templat, atau data lain dalam bentuk apa pun. Ansible dapat melakukan SCP (salinan aman) file secara paralel ke beberapa mesin. Modul salin memerlukan sumber dan tujuan sebagai parameter.
ansible@ns6:~ $ ansible ns6 -m copy -a "src=/usr/local/etc/ansible/hosts dest=/usr/home/ansible"
BECOME password: router1
ns6 | CHANGED => {
    "changed": true,
    "checksum": "9186f375eff9eb4b884c50f157e5d9973db8002b",
    "dest": "/usr/home/ansible/hosts",
    "gid": 1002,
    "group": "ansible",
    "md5sum": "aff4eaca42fb7821d748b4b2b98f8d75",
    "mode": "0644",
    "owner": "ansible",
    "size": 529,
    "src": "/home/ansible/.ansible/tmp/ansible-tmp-1701429314.8753471-2935-107761807460326/source",
    "state": "file",
    "uid": 1002
}
ansible@ns6:~ $

Ada banyak hal bermanfaat lainnya yang terkait dengan Ansible yang bahkan tidak dipertimbangkan dalam postingan ini. Saya menganjurkan Anda untuk melihat dokumentasi Ansible karena dokumentasi tersebut cukup lengkap dan mudah dipahami, serta merinci kapabilitas sebenarnya dari kerangka kerja otomatisasi Ansible. Selain itu, memiliki pola dan standar yang terkait dengan cara menyusun playbook Ansible, berbagi kode, mengaudit tindakan, dll.

Sangat penting untuk memastikan integritas sumber daya dan kebersihan kode Ansible Anda. Pengorganisasian kode, pengelompokan host, dan akses dengan hak istimewa terendah hanyalah beberapa komponen yang akan sangat penting untuk adopsi massal kerangka kerja Ansible sekaligus mampu menjaga integritas lingkungan Anda.
Subscribe on LinkedIn Cara Melakukan Konfigurasi Ansible pada FreeBSD 14

Enclosures Link: Cara Melakukan Konfigurasi Ansible pada FreeBSD 14

Silahkan Berkomentar, Kakak...! Bunda...!

Posting Komentar