Ansible adalah gratis, sumber terbuka, dan salah satu alat manajemen konfigurasi paling populer. Ini adalah alat lintas platform yang menyederhanakan komputasi awan, manajemen konfigurasi, instalasi paket, dan konfigurasi layanan. Ini menggunakan file YAML yang berisi langkah-langkah yang ingin dijalankan pengguna di mesin tertentu. Dengan Ansible, Anda dapat mengonfigurasi dan mengelola lebih dari sekadar host dengan satu perintah. Ansible adalah alternatif dari alat manajemen konfigurasi lainnya seperti Chef and Puppet.
Dalam artikel ini, saya akan menunjukkan cara menginstal dan menggunakan alat manajemen konfigurasi Ansible di Debian 11.
Prasyarat
- Tiga server menjalankan Debian 11.
- Kata sandi root dikonfigurasi di setiap server.
Untuk tujuan tutorial ini, kita akan menggunakan pengaturan berikut:
- Pengontrol yang Memungkinkan - 192.168.10.9
- Host yang Mungkin - 192.168.10.10, 192.168.10.11
Instal Ansible di Debian 11
Secara default, paket Ansible tidak disertakan dalam repositori default Debian. Ada dua cara untuk menginstal Ansible di Debian 11.
- Menggunakan Perintah APT
- Menggunakan Perintah PIP
Instal Ansible Menggunakan APT
Pertama, Anda perlu menginstal beberapa dependensi di sistem Anda. Anda dapat menginstal dependensi yang diperlukan menggunakan perintah berikut:
apt-get install gnupg2 curl wget -y
Setelah semua dependensi terinstal, edit source.list APT dan tambahkan repositori Ansible:
nano /etc/apt/sources.list
Tambahkan baris berikut:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main
Simpan dan tutup file setelah selesai kemudian tambahkan kunci GPG Ansible menggunakan perintah berikut:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
Anda akan melihat output berikut:
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)). Executing: /tmp/apt-key-gpghome.lFEjztT9TY/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 gpg: key 93C4A3FD7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported gpg: Total number processed: 1 gpg: imported: 1
Sekarang, perbarui repositori dan instal Ansible dengan perintah berikut:
apt-get update
apt-get install ansible -y
Setelah Ansible diinstal, verifikasi versi Ansible dengan perintah berikut:
ansible --version
Anda akan mendapatkan output berikut:
ansible 2.10.8 config file = None configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible executable location = /usr/bin/ansible python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
Instal Ansible Menggunakan PIP
Pertama, Anda perlu menginstal Python dan PIP ke sistem Anda. Anda dapat menginstalnya menggunakan perintah berikut:
apt-get install python3 python3-pip -y
Setelah instalasi selesai, gunakan perintah pip untuk menginstal Ansible seperti yang ditunjukkan di bawah ini:
pip install ansible
Instal sshpass
Sshpass adalah alat baris perintah yang memungkinkan Anda memberikan kata sandi dengan perintah SSH. Di sini, kita akan menggunakan sshpass pada node pengontrol Ansible dengan Ansible untuk mengautentikasi host jarak jauh.
Anda dapat menginstal sshpass dengan perintah berikut:
apt-get install sshpass -y
Selanjutnya, sambungkan ke host jarak jauh pertama yang memungkinkan untuk menambahkan sidik jari SSH ke known_hosts Anda berkas:
ssh [email protected]
Anda akan diminta untuk memberikan kata sandi SSH seperti yang ditunjukkan di bawah ini:
The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established. ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts. Password:
Berikan sandi Anda dan tekan Enter untuk menambahkan sidik jari SSH.
Selanjutnya, sambungkan ke host jarak jauh kedua yang memungkinkan untuk menambahkan sidik jari SSH ke file known_hosts Anda:
ssh [email protected]
Anda akan diminta untuk memberikan kata sandi SSH seperti yang ditunjukkan di bawah ini:
The authenticity of host '192.168.10.11 (192.168.10.11)' can't be established. ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.10.11' (ECDSA) to the list of known hosts. Password:
Berikan kata sandi Anda dan tekan Enter .
Anda sekarang dapat menggunakan perintah sshpass untuk memverifikasi koneksi SSH:
sshpass -p yourpassword ssh [email protected]
Buat File Inventaris Host yang Memungkinkan
Selanjutnya, Anda perlu membuat file inventaris untuk menentukan alamat IP host jarak jauh, nama pengguna, kata sandi, dan port SSH:
nano ~/.hosts
Tambahkan baris berikut:
[servers] server1 ansible_host=192.168.10.10 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22 server2 ansible_host=192.168.10.11 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22
Simpan dan tutup file.
Catatan :Pada file di atas, kita akan menggunakan IP remote host, username, password, dan port SSH.
Bekerja dengan Ansible
Ansible menyediakan banyak modul yang membantu Anda mengelola host jarak jauh.
Sintaks dasar untuk menjalankan Ansible seperti yang ditunjukkan di bawah ini:
ansible -i [inventory_file] -m [module] [host]
Mari verifikasi konektivitas ping ke semua host:
ansible -i ~/.hosts -m ping all
Jika semuanya baik-baik saja, Anda akan mendapatkan output berikut:
server2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" } server1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" }
Jika Anda ingin memverifikasi konektivitas ping dari satu-satunya server1, jalankan perintah berikut:
ansible -i ~/.hosts -m ping server1
Anda akan mendapatkan output berikut:
server1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" }
Anda dapat menggunakan modul shell untuk menjalankan semua perintah pada host jarak jauh.
Misalnya, untuk menjalankan "free -m " pada server2, jalankan perintah berikut:
ansible -i ~/.hosts -m shell -a "free -m" server2
Anda akan melihat output berikut:
server2 | CHANGED | rc=0 >> total used free shared buff/cache available Mem: 1982 128 491 2 1363 1669 Swap: 0 0 0
Untuk menjalankan "df -h " commad di server2, jalankan perintah berikut:
ansible -i ~/.hosts -m shell -a "df -h" server2
Anda akan mendapatkan output berikut:
server2 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 976M 0 976M 0% /dev tmpfs 199M 404K 198M 1% /run /dev/sda1 50G 2.4G 45G 5% / tmpfs 992M 124K 992M 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 199M 0 199M 0% /run/user/0
Ansible menyediakan modul apt untuk menginstal paket apa pun ke host jarak jauh.
Untuk menginstal Nginx paket di server1, jalankan perintah berikut:
ansible -i ~/.hosts -m ansible.builtin.apt -a "name=nginx state=present" server1
Anda akan mendapatkan output berikut:
server1 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "cache_update_time": 1631424599, "cache_updated": false, "changed": true, "stderr": "", "stderr_lines": [], "Upgrading binary: nginx.", "Setting up nginx (1.18.0-6.1) ...", "Processing triggers for man-db (2.9.4-2) ...", "Processing triggers for libc-bin (2.31-13) ..." ] }
Untuk memeriksa status layanan Nginx di server1, jalankan perintah berikut:
ansible -i ~/.hosts -m shell -a "systemctl status nginx" server1
Anda akan mendapatkan output berikut:
server1 | CHANGED | rc=0 >> ? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-09-12 05:55:36 UTC; 49s ago Docs: man:nginx(8) Process: 10761 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 10764 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 10871 (nginx) Tasks: 2 (limit: 2341) Memory: 5.8M CPU: 54ms CGroup: /system.slice/nginx.service ??10871 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??10874 nginx: worker process Sep 12 05:55:36 ansible systemd[1]: Starting A high performance web server and a reverse proxy server... Sep 12 05:55:36 ansible systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument Sep 12 05:55:36 ansible systemd[1]: Started A high performance web server and a reverse proxy server.
Ansible menyediakan modul pengguna untuk membuat dan mengelola pengguna di host jarak jauh.
Untuk membuat pengguna baru bernama pengguna1 di server1, jalankan perintah berikut:
ansible -i ~/.hosts -m ansible.builtin.user -a "name=user1 password=yourpassword" server1
Anda akan melihat output berikut:
server1 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": true, "comment": "", "create_home": true, "group": 1000, "home": "/home/user1", "name": "user1", "password": "NOT_LOGGING_PASSWORD", "shell": "/bin/sh", "state": "present", "system": false, "uid": 1000 }
Kesimpulan
Pada artikel ini, Anda mempelajari cara menginstal Ansible dengan APT dan PIP. Anda juga mempelajari cara menggunakan modul Ansible yang berbeda untuk mengelola host jarak jauh. Saya harap Anda sekarang memiliki pemahaman yang cukup tentang Ansible. Jangan ragu untuk bertanya kepada saya jika Anda memiliki pertanyaan.