Ansible adalah alat otomatisasi TI sumber terbuka yang digunakan untuk mengotomatisasi manajemen konfigurasi, penyediaan, penerapan aplikasi, orkestrasi, dan banyak proses TI lainnya tanpa perlu menginstal agen apa pun di node klien. Itu bergantung pada protokol SSH untuk berkomunikasi dengan node klien. Ansible memberikan kemudahan penggunaan dan instalasi bila dibandingkan dengan alat serupa lainnya seperti boneka, chef, terraform dll. Dalam tutorial ini, kita akan belajar cara menginstal Ansible di CentOS 8 Linux dan mengkonfigurasinya.
Instal Ansible di CentOS 8 Linux
Langkah 1: Instal dan Aktifkan EPEL
gudang
[root@install-ansible ~]# dnf install epel-release -y
Langkah 2: Unduh indeks paket jarak jauh ke cache file lokal untuk mempercepat dnf
subsequent berikutnya perintah.
[root@install-ansible ~]# dnf makecache CentOS Linux 8 - AppStream 2.6 kB/s | 4.3 kB 00:01 CentOS Linux 8 - BaseOS 2.6 kB/s | 3.9 kB 00:01 CentOS Linux 8 - Extras 1.0 kB/s | 1.5 kB 00:01 Extra Packages for Enterprise Linux 8 - x86_64 8.7 kB/s | 11 kB 00:01 Extra Packages for Enterprise Linux Modular 8 - x86_64 9.6 kB/s | 10 kB 00:01 Remi's Modular repository for Enterprise Linux 8 - x86_64 501 B/s | 833 B 00:01 Safe Remi's RPM repository for Enterprise Linux 8 - x86_64 802 B/s | 833 B 00:01 Metadata cache created.
Langkah 3: Instal Ansible
[root@install-ansible ~]# dnf install ansible -y Last metadata expiration check: 0:02:17 ago on Tue 01 Mar 2022 10:28:48 AM IST. Dependencies resolved. ============================================================================================================================================================= Package Architecture Version Repository Size ============================================================================================================================================================= Installing: ansible noarch 2.9.27-1.el8 epel 17 M Installing dependencies: python3-bcrypt x86_64 3.1.6-2.el8.1 epel 44 k python3-jmespath noarch 0.9.0-11.el8 appstream 45 k python3-pyasn1 noarch 0.3.7-6.el8 appstream 126 k python3-pynacl x86_64 1.3.0-5.el8 epel 100 k sshpass x86_64 1.06-9.el8 epel 27 k Installing weak dependencies: python3-paramiko noarch 2.4.3-1.el8 epel 289 k Transaction Summary ============================================================================================================================================================= Install 7 Packages Installed: ansible-2.9.27-1.el8.noarch python3-bcrypt-3.1.6-2.el8.1.x86_64 python3-jmespath-0.9.0-11.el8.noarch python3-paramiko-2.4.3-1.el8.noarch python3-pyasn1-0.3.7-6.el8.noarch python3-pynacl-1.3.0-5.el8.x86_64 sshpass-1.06-9.el8.x86_64 Complete!
Langkah 4: Verifikasi pemasangan yang memungkinkan
[root@install-ansible ~]# ansible --version ansible 2.9.27 config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, Sep 10 2021, 09:13:53) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
Konfigurasi Ansible pada CentOS 8
Pertimbangkan arsitektur di bawah ini untuk tutorial ini. Anda dapat memperluas hal yang sama ke n jumlah klien.
Mengelola/Mengatur Klien dari Ansible Server
Untuk mengelola klien, SSH harus diinstal dan dijalankan. Port SSH harus terbuka dan dapat diakses dari Server Ansible.
Langkah 5: Buka /etc/hosts
file di server yang memungkinkan
Pada artikel ini, kita akan menggunakan /etc/hosts
file untuk resolusi nama DNS dari klien IP Addr.
[root@ansible-server ~]# vim /etc/hostsIP Addr atau Nama DNS untuk klien
Anda dapat menggunakan IP Addr atau nama DNS klien untuk mengelola
Tambahkan entri di bawah ini pada alamat IP klien yang memungkinkan dan nama host
10.180.10.122 ansible-client
Menyiapkan Otentikasi Tanpa Kata Sandi SSH
Langkah 6: Buat kunci SSH di Server Ansible (Management Node) tanpa dimintai frasa sandi.
[centos@ansible-server ~]$ ssh-keygen -f id_rsa -t rsa -N '' Generating public/private rsa key pair. Your identification has been saved in id_rsa. Your public key has been saved in id_rsa.pub. The key fingerprint is: SHA256:vqvgSILGrVxCDsLuORbJojxiYDEFEFlNQi5ZrHeqYhE centos@ansible-server The key's randomart image is: +---[RSA 3072]----+ |+B*o. | |.+.o. | |o.o | |oE. . | |++=o S | |@*o . | |OB+o. . | |OX=o . . | |*=+ . ..o. | +----[SHA256]-----+
Langkah 7: Salin kunci SSH ke Ansible Client
[centos@ansible-server ~]$ ssh-copy-id centos@ansible-client /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/centos/.ssh/id_rsa.pub" The authenticity of host 'ansible-client (10.180.141.122)' can't be established. ECDSA key fingerprint is SHA256:oDKa1jiDVmPzHmD0HqKr5v10xhalFVbklrdudxAFx5M. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys centos@ansible-client's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'centos@ansible-client'" and check to make sure that only the key(s) you wanted were added.Prompt kata sandi untuk pengguna centos di klien yang memungkinkan
Ketikkan kata sandi masuk untuk pengguna centos di Ansible-client untuk pertama kalinya. Setelah kunci SSH disalin, Anda akan dapat masuk menggunakan tanpa kata sandi
Langkah 8: Verifikasi koneksi tanpa kata sandi
[centos@ansible-server ~]$ ssh centos@ansible-client Last login: Tue Mar 1 05:57:15 2022 from 10.180.6.115 [centos@ansible-client ~]$
Langkah 9: Akses Sudo untuk centos
pengguna di klien yang memungkinkan
Pastikan, centos
pengguna di klien yang memungkinkan memiliki akses Sudo tanpa kata sandi. Ini membantu memungkinkan untuk menjalankan root
perintah pada klien yang memungkinkan menggunakan centos
pengguna.
# visudo ## Add the below content centos ALL=(ALL) NOPASSWD:ALL
Sekarang klien-ansible siap dikelola dari server-ansible (Management Node) menggunakan centos
pengguna di klien yang memungkinkan.
Cara menggunakan Ansible
Langkah 10: Buat Inventaris yang Mungkin
Ansible menyimpan daftar semua informasi klien jarak jauh yang dikelolanya dalam file bernama inventory
mengajukan. File inventaris yang memungkinkan hanyalah file teks biasa sederhana dan lokasi file default adalah:/etc/ansible/hosts
Kami dapat membuat file inventaris Ansible selain dari lokasi default.
[centos@ansible-server ~]$ mkdir ~/ansible [centos@ansible-server ~]$ cd ~/ansible [centos@ansible-server ansible]$ vim hosts
Tambahkan semua entri klien yang memungkinkan
ansible-client ansible_user=centosopsi ansible_user dalam file ansible/hosts
opsi ansible_user digunakan untuk mendefinisikan pengguna pada klien ansible yang akan menjalankan perintah.
File Inventaris yang Mungkin - Campuran Nama Host dan alamat IPAnda juga dapat mencampur Alamat IP dan nama DNS dari klien jarak jauh di file inventaris
10.180.10.122 ansible_user=centosKelompokkan klien jarak jauh dalam file Inventaris
Anda juga dapat mengelompokkan klien jarak jauh dalam file inventaris berdasarkan penggunaan di sana. Misalnya, jika Anda memiliki 4 klien sebagai server web dan 2 sebagai server db.
[centos] ansible-client ansible_user=centos
Langkah 11 Daftar semua host dari file inventaris
[centos@ansible-server ansible]$ ansible -i hosts --list-hosts all hosts (1): ansible-client
Langkah 12: Pastikan host aktif
[centos@ansible-server ansible]$ ansible -i hosts -m ping all ansible-client | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
Langkah 13: Jalankan perintah pada klien yang memungkinkan jarak jauh (berbasis semua/nama grup)
[centos@ansible-server ansible]$ ansible -i hosts -m shell -a "more /etc/redhat-release" ansible-client ansible-client | CHANGED | rc=0 >> CentOS Linux release 7.8.2003 (Core)
Itu dia! Sekarang mulailah mengelola klien jarak jauh Anda menggunakan ansible dengan cara Anda sendiri.
Ansible Playbook membantu mengelola server Anda dengan lebih mudah dengan membuat tindakan TI yang kompleks dijalankan dengan keterlibatan manusia yang terbatas atau tanpa keterlibatan manusia. Kami akan mencoba membahas Ansible Playbook di artikel kami berikutnya.