Tutorial ini mencakup langkah demi langkah instalasi dan konfigurasi Ansible di Redhat Enterprise Linux 8.
Ansible adalah sistem manajemen konfigurasi Open Source terkemuka. Ini memudahkan administrator dan tim operasi untuk mengontrol ribuan server dari mesin pusat tanpa menginstal agen di dalamnya.
Dalam tutorial ini Anda akan mempelajari:
- Ikhtisar yang Mungkin
- Instal dan Konfigurasi Python
- Setel SSH tanpa kata sandi
- Instal Memungkinkan
- Menguji dan Mengelola Kemungkinan
Persyaratan dan Konvensi Perangkat Lunak yang Digunakan
Kategori | Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan |
---|---|
Sistem | Red Hat Enterprise Linux 8 |
Perangkat Lunak | Python3, Memungkinkan |
Lainnya | Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo perintah. |
Konvensi | # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa |
Ikhtisar yang Mungkin
Ansible adalah mesin otomatisasi TI yang sangat sederhana yang mengotomatiskan penyediaan cloud, manajemen konfigurasi, penerapan aplikasi, orkestrasi intra-layanan, dan banyak kebutuhan TI lainnya.
Dirancang untuk penerapan multi-tingkat sejak hari pertama, Ansible memodelkan infrastruktur TI Anda dengan menjelaskan bagaimana semua sistem Anda saling terkait, bukan hanya mengelola satu sistem pada satu waktu.
Itu tidak menggunakan agen dan tidak ada infrastruktur keamanan khusus tambahan, sehingga mudah untuk diterapkan – dan yang paling penting, menggunakan bahasa yang sangat sederhana (YAML, dalam bentuk Ansible Playbooks) yang memungkinkan Anda untuk menggambarkan pekerjaan otomatisasi Anda dengan cara yang mendekati bahasa Inggris biasa. Ansible bekerja dengan menghubungkan ke node Anda dan mengeluarkan program kecil, yang disebut “Modul yang mungkin” ke node tersebut.
Program ini ditulis untuk menjadi model sumber daya dari keadaan sistem yang diinginkan. Ansible kemudian mengeksekusi modul-modul ini (melalui SSH secara default), dan menghapusnya setelah selesai.
Pustaka modul Anda dapat berada di mesin apa pun, dan tidak diperlukan server, daemon, atau database. Biasanya Anda akan bekerja dengan program terminal favorit, editor teks, dan mungkin sistem kontrol versi untuk melacak perubahan pada konten Anda.
Instal dan Konfigurasi Python
Versi default Python di RHEL 8 adalah Python 3.6. Tetapi Python 2 tetap tersedia di RHEL 8. Jika karena alasan apa pun Python 3.6 tidak ada dalam instalasi Red Hat Enterprise Linux 8, Anda harus menginstalnya secara manual.
Python 3.6 dapat diinstal pada RHEL 8 dengan menjalankan perintah di bawah ini pada terminal Anda. Python perlu diinstal pada Server Ansible dan semua host/klien yang akan terhubung.
# yum install python3 Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 8:59:59 ago on Sun 03 Feb 2019 11:20:51 PM +04. Dependencies resolved. ====================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================== Installing: python36 x86_64 3.6.6-17.el8+2102+a4bbd900 rhel-8-for-x86_64-appstream-beta-rpms 22 k Enabling module streams: python36 3.6 Transaction Summary ====================================================================================================================================================== Install 1 Package Total download size: 22 k Installed size: 22 k Is this ok [y/N]: y Downloading Packages: python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm 6.0 kB/s | 22 kB 00:03 ------------------------------------------------------------------------------------------------------------------------------------------------------ Total 6.0 kB/s | 22 kB 00:03 warning: /var/cache/dnf/rhel-8-for-x86_64-appstream-beta-rpms-64aba9de5ea7e089/packages/python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f21541eb: NOKEY Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) 3.2 kB/s | 3.3 kB 00:01 Importing GPG key 0xF21541EB: Userid : "Red Hat, Inc. (beta key 2) <[email protected]>" Fingerprint: B08B 659E E86A F623 BC90 E8DB 938A 80CA F215 41EB From : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta Is this ok [y/N]: y ... Installed: python36-3.6.6-17.el8+2102+a4bbd900.x86_64 Complete!
Untuk menggunakan Python 3, cukup ketik python3
di terminal.
Anda seharusnya mencatat bahwa untuk menggunakan Python 3, perintahnya adalah python3 dan python2 untuk Python 2. Bagaimana jika aplikasi Anda dikonfigurasi untuk merujuk ke python yang tidak tersedia di seluruh sistem. Anda akan mendapatkan kesalahan bash di bawah ini.
# python -bash: python: command not found
Anda dapat menggunakan mekanisme alternatif untuk mengaktifkan perintah python yang tidak berversi di seluruh sistem, dan mengaturnya ke versi tertentu. Untuk mengatur Python 3 sebagai default jalankan perintah berikut.
# alternatives --set python /usr/bin/python3
Menjalankan python -V harus menampilkan versi default Python yang dikonfigurasi:
#python -V Python 3.6.6
atau dengan memulai Python sebuah konsol:
# python Python 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Setel SSH tanpa kata sandi
Buat pengguna ansible
di semua host:
# useradd ansible ; echo "" | passwd --stdin ansible
Buat entri yang diperlukan dalam file sudoers /etc/sudoers
untuk pengguna yang memungkinkan untuk akses sudo tanpa kata sandi:
ansible ALL=(ALL) NOPASSWD: ALL
Sekarang buat kunci SSH di Server yang Mungkin:
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): Created directory '/home/ansible/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ansible/.ssh/id_rsa. Your public key has been saved in /home/ansible/.ssh/id_rsa.pub. The key fingerprint is: SHA256:wNt/uNePRkrV+Hhv/DJgteXK2BjOGvPbr9yNigXM2EM ansible@rhel8-ansible-server The key's randomart image is: +---[RSA 2048]----+ | | | . | | o E o | | + * + o| | . S * o * | | . += + +| | ==o@ +.| | OBoO+=| | +o++*BB| +----[SHA256]-----+
Salin ke server jarak jauh sebagai pengguna yang memungkinkan:
$ ssh-copy-id ansible@rhel8-ansible-client /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'rhel8-ansible-client (192.168.1.109)' can't be established. ECDSA key fingerprint is SHA256:e+NfCeK/kvnignWDHgFvIkHjBWwghIIjJkfjygR7NkI. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /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 ansible@rhel8-ansible-client's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'ansible@rhel8-ansible-client'" and check to make sure that only the key(s) you wanted were added.
Instal Memungkinkan
Setelah Python diinstal, lanjutkan untuk menginstal Pip yang merupakan pengelola paket Python yang akan kita gunakan untuk menginstal Ansible:
# yum -y install python3-pip Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 9:03:18 ago on Sun 03 Feb 2019 11:20:51 PM +04. Package python3-pip-9.0.3-4.el8.noarch is already installed. Dependencies resolved. Nothing to do. Complete!
Setelah kita memiliki pip3
diinstal, gunakan untuk menginstal Ansible di sistem Manajemen Ansible sebagai pengguna yang memungkinkan.
$ pip3 install ansible --user
Anda dapat melihat Ansible diinstal menggunakan perintah berikut:
$ ansible --version ansible 2.7.6 config file = None configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/ansible/.local/lib/python3.6/site-packages/ansible executable location = /home/ansible/.local/bin/ansible python version = 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
Menguji dan Mengelola
Buat file inventaris Ansible, defaultnya adalah /etc/ansible/hosts
tetapi Anda dapat menyalin file host di direktori home dari pengguna yang memungkinkan. Anda juga dapat membuat grup host jarak jauh seperti di bawah ini di file host.
[web]
192.168.1.105
[db]
192.168.1.107
[app]
192.168.1.108
192.168.1.109
192.168.1.110
Anda dapat menggunakan modul ping untuk menguji Ansible dan setelah berhasil dijalankan, Anda dapat melihat output di bawah ini.
$ ansible -i hosts 192.168.1.109 -m ping 192.168.1.109 | SUCCESS => { "changed": false, "ping": "pong" }
Opsi -i digunakan untuk menyediakan jalur ke file inventaris. Anda akan mendapatkan hasil yang sama untuk nama grup “aplikasi”.
$ ansible -i hosts app -m ping 192.168.1.108 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.109 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.110 | SUCCESS => { "changed": false, "ping": "pong" }
Kesimpulan
Kesederhanaan dan kemampuan Ansible untuk mengurangi kerumitan alat lain telah menjadikannya pelamar yang andal untuk lingkungan Anda. Perhatian utamanya adalah pada keamanan dan keandalan. Ini menggunakan OpenSSH untuk transportasi, dan bahasanya dirancang untuk dapat diaudit bahkan oleh mereka yang tidak terbiasa dengan program ini. Ansible cukup cocok untuk mengelola penyiapan kecil dengan beberapa instance serta lingkungan perusahaan.