Seperti yang kita ketahui bahwa Mungkin adalah alat otomatisasi yang paling kuat yang dapat mengkonfigurasi host dengan mudah. Manfaat utama menggunakan Ansible sebagai alat otomatisasi adalah kita tidak perlu menginstal agen apa pun di host. Komunikasi antara server Ansible dan kliennya atau host yang dikelola tidak memiliki agen, ia bekerja melalui mekanisme ssh.
Dalam terminologi Ansible, sistem tempat kami menginstal perangkat lunak yang memungkinkan disebut sebagai “Control Node ” dan server yang dikelola dan dikonfigurasi oleh server Ansible atau Control Node dikenal sebagai “Managed Host “. Entri Host yang Dikelola disimpan dalam file inventaris host, ini adalah file teks pada node kontrol yang terdiri dari nama host atau alamat ip yang dikelola. Di Ansible, kami dapat mengelola dua jenis inventaris host yaitu statis dan dinamis .
Pada artikel kali ini kita akan membahas bagaimana cara mengelola inventori Static dan Dynamic Host di Ansible. Saya berasumsi perangkat lunak Ansible sudah diinstal pada node kontrol saya. Setiap kali kami menginstal perangkat lunak yang memungkinkan, file host default yang memungkinkan dibuat dengan nama “hosts ” di bawah folder “/etc/ansible ” Jika software Ansible tidak diinstal di server Anda, lihat di bawah
- Cara Menginstal Ansible (Alat Otomatisasi) di CentOS 8/RHEL 8
- Cara menginstal Ansible Automation tool di CentOS 7.x
Dalam tutorial ini saya akan menggunakan yang berikut:
Satu Simpul Kontrol – control-node.example.com (192.168.0.10)
Dua Host Terkelola – servera.example.com (192.168.0.20) dan serverb.example.com (192.168.0.30)
Inventaris Host Statis
Inventaris host statis di Ansible adalah mirip INI file teks, di mana bagian masing-masing menyatakan satu grup host ( grup host). Setiap bagian dimulai dengan nama grup host yang diapit dalam tanda kurung siku([]) kemudian entri host dari setiap host yang dikelola dalam grup dicantumkan, masing-masing pada satu baris. Entri host dapat nama host atau alamat IP dari host yang dikelola. Mari Buat file inventaris dengan nama "inventaris" di bawah folder "test-lab" di direktori home pengguna Anda.
[[email protected] ~]$ mkdir test-lab [[email protected] ~]$ cd test-lab/ [[email protected] test-lab]$ vi inventory control-node.example.com 192.168.0.10 [webserver] servera.example.com [dbserver] serverb.example.com [datacenter:children] webserver dbserver
Simpan dan Keluar dari file.
Dalam file inventaris saya telah membuat dua grup host dengan nama server web dan dbserver, selain itu kami telah membuat satu grup lagi dengan nama pusat data yang mencakup grup grup host. Inventaris host yang mungkin dapat mencakup grup grup host, ini dilakukan dengan ':anak-anak ' contoh sufiks ditampilkan dalam inventaris yang dibuat di atas. Juga Tidak wajib untuk menempatkan host dalam grup, kita cukup menempatkan host tanpa menyebutkan grup host seperti entri "control-node.exmaple.com" di file inventaris
Mari lakukan beberapa operasi dasar dengan perintah yang memungkinkan dengan merujuk host inventaris.
Untuk menggunakan perintah yang memungkinkan untuk manajemen host, jalur file inventaris host harus ditentukan dengan “-i ” pilihan.
$ ansible {host-pattern} -i /
Contoh:1 Daftar semua host yang dikelola
Untuk membuat daftar semua host yang dikelola, tentukan kata kunci 'semua' sebagai ganti pola host dalam perintah yang memungkinkan, contoh ditampilkan di bawah
[[email protected] test-lab]$ ansible all -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (4): control-node.example.com 192.168.0.10 servera.example.com serverb.example.com [[email protected] test-lab]$
Cara lain untuk membuat daftar semua host yang dikelola adalah dengan menggunakan karakter wild card “*”.
[[email protected] test-lab]$ ansible '*' -i /home/linuxtechi/test-lab/inventory --list-hosts
Contoh:2 Daftar host yang dikelola berdasarkan grup host.
Tentukan nama grup host sebagai ganti pola host
[[email protected] test-lab]$ ansible webserver -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (1): servera.example.com [[email protected] test-lab]$ [[email protected] test-lab]$ ansible datacenter -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (2): servera.example.com serverb.example.com [[email protected] test-lab]$
Contoh:3 Daftar host yang dikelola berdasarkan pola host wild card.
Daftar semua host yang berada di domain “*.example.com”
[[email protected] test-lab]$ ansible '*.example.com' -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (3): control-node.example.com servera.example.com serverb.example.com [[email protected] test-lab]$
Daftar semua host yang ada di jaringan “192.168.0.0”
[[email protected] test-lab]$ ansible '192.168.0.*' -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (1): 192.168.0.10 [[email protected] test-lab]$
Contoh:4 Pola host lanjutan seperti penyertaan dan pengecualian
Selain wildcard, Ansible memungkinkan kita untuk membuat pola host yang kompleks menggunakan logika inklusi dan eksklusi. Penyertaan dilakukan dengan karakter ':' untuk memisahkan grup dalam pola host untuk menunjukkan logika OR.
Contoh pola Penyertaan Host
[[email protected] test-lab]$ ansible 'webserver:dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (2): servera.example.com serverb.example.com [[email protected] test-lab]$
Contoh pola Persimpangan Host
‘:&’ mewakili perpotongan dua grup dalam file inventaris
[[email protected] test-lab]$ ansible 'datacenter:&dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (1): serverb.example.com [[email protected] test-lab]$
Contoh pola Pengecualian Host
Pengecualian dilakukan dengan menggunakan karakter ':' dalam hubungannya dengan karakter '!'
[[email protected] test-lab]$ ansible 'datacenter:!dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (1): servera.example.com [[email protected] test-lab]$
Inventaris Host Dinamis
Inventaris host di Ansible dapat dibuat secara dinamis. Sumber untuk informasi inventaris dinamis termasuk penyedia cloud publik / pribadi, informasi sistem tukang sepatu, database LDAP, atau CMDB (database Manajemen Konfigurasi). Ansible mencakup skrip yang menangani informasi host, grup, dan variabel dinamis dari penyedia paling umum seperti Amazon EC2, Cobbler, Rackspace, dan OpenStack.
Untuk penyedia Cloud, autentikasi dan informasi akses harus ditentukan dalam file yang dapat diakses skrip. Sejumlah skrip yang ada tersedia dari Situs GitHub Ansible di https://github.com/ansible/ansible/tree/devel/contrib/inventory, skrip ini mendukung pembuatan dinamis inventaris berdasarkan informasi host yang tersedia dari a platform dalam jumlah besar seperti Openstack , AWS , Luar biasa , Satelit Topi Merah dan OpenShift .
Kami dapat menulis program inventaris dinamis kustomisasi kami sendiri dalam bahasa pemrograman apa pun dan harus kembali dalam format JSON jika diberikan opsi yang sesuai. Agar Ansible dapat menggunakan skrip untuk mengambil informasi host dari sistem inventaris eksternal, skrip ini harus mendukung –daftar parameter, mengembalikan grup host dan informasi host yang mirip dengan hash/kamus JSON. Contoh ditunjukkan di bawah ini :
[[email protected] test-lab]$ ./inventoryscript --list { "webservers" :["web1.example.com", "web2.example.com" ], "dbservers" :["db1.example.com", "db2.example.com"] }
Skrip yang membuat inventaris dinamis harus dapat dieksekusi agar Ansible dapat menggunakannya.
Catatan:Ansible mendukung penggunaan beberapa inventaris dalam proses yang sama. Jika nilai diteruskan ke parameter '-i' atau nilai parameter inventaris di /etc/ansible/ansible.cfg . Ketika beberapa file inventaris ada, mereka diperiksa dalam urutan abjad. Oleh karena itu, penting agar nama file mengikuti nama file lain dalam urutan abjad jika kontennya bergantung pada konten file lain.