Beberapa hari yang lalu, kita telah membahas cara menyiapkan lab Ansible tiga simpul menggunakan Vagrant di Linux. Dalam artikel ini, kita akan mempelajari konsep dasar Ansible seperti inventaris Ansible dan file konfigurasi secara mendetail.
Struktur Dasar Kemungkinan
Saat Anda mulai bekerja dengan ansible, ada dua file penting yang harus Anda pahami. Salah satunya adalah Inventaris yang memungkinkan file dan yang kedua adalah Konfigurasi yang memungkinkan berkas.
Konfigurasi file berisi semua konfigurasi yang memungkinkan akan digunakan selama waktu berjalan. Ketika Anda menginstal ansible menggunakan OS package manager, maka Anda dapat melihat ada file konfigurasi default bernama "ansible.cfg
" dibuat di /etc/ansible
direktori.
File inventaris berisi alamat IP atau informasi DNS tentang daftar host terkelola yang ingin kami tangani. Ansible akan membaca nama host dari file inventaris dan tugas/permainan akan dijalankan pada node tersebut. File inventaris dapat dibuat di ini
, yaml
, dan json
format.
Di bawah ini adalah struktur proyek saya. Saya memiliki ansible.cfg
file konfigurasi, file host, dan buku pedoman yang ditulis dalam yaml
formatnya.
Ketika saya memicu playbook, ansible akan membaca konfigurasi dari ansible.cfg
file dan detail host dari file host untuk menjalankan drama.
[email protected]:~/ansible_project$ tree . . ├── ansible.cfg ├── hosts └── playbook.yml 0 directories, 3 files
Mari kita bicara secara detail tentang kedua file ini dan akhirnya kita akan menjalankan beberapa perintah adhoc.
File Konfigurasi yang Memungkinkan
Ansible menggunakan file konfigurasi untuk memuat parameter yang diperlukan untuk menjalankan tugas yang memungkinkan. Jika Anda telah menginstal memungkinkan menggunakan pengelola paket , Anda akan memiliki ansible.cfg
file di /etc/ansible
direktori.
Di bawah ini adalah contoh dari ansible.cfg
berkas.

Ansible akan mencari file konfigurasi dengan urutan sebagai berikut.
ANSIBLE_CONFIG
- variabel lingkunganansible.cfg
- Direktori saat ini tempat Anda menjalankan perintah.ansible.cfg
- Direktori beranda pengguna/etc/ansible/ansible.cfg
- Dalam/etc/ansible
direktori
Jalankan ansible --version
perintah untuk melihat file konfigurasi mana yang mungkin dipilih.
$ ansible --version ansible [core 2.12.3] config file = /home/vagrant/ansible_project/ansible.cfg configured module search path = ['/home/vagrant/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible ansible collection location = /home/vagrant/.ansible/collections:/usr/share/ansible/collections executable location = /usr/local/bin/ansible python version = 3.8.10 (default, Nov 26 2021, 20:14:08) [GCC 9.3.0] jinja version = 2.10.1 libyaml = True
Saya telah membuat direktori proyek khusus dan membuat ansible.cfg
mengajukan. File konfigurasi saya hanya berisi dua properti, lokasi inventaris, dan pemeriksaan kunci host yang dinonaktifkan.
[defaults] inventory = /home/karthick/ansible_project/hosts host_key_checking = False
Ada banyak properti lain, tetapi saat ini Anda dapat mulai menggunakannya dengan menambahkan properti "inventaris" saja.
File Inventaris yang Memungkinkan
Dalam file inventaris, kami akan memberikan alamat IP atau DNS nama server, perangkat jaringan, layanan cloud, atau apa pun yang memungkinkan untuk bekerja.
Persediaan dapat ditulis dalam ini
, json
, dan yaml
format dan Anda juga memiliki skrip untuk mengonversi satu format inventaris ke format lain.
Secara default, Anda dapat menemukan file inventaris (host) di /etc/ansible
direktori jika Anda telah menginstal mungkin menggunakan manajer paket OS. Selalu disarankan untuk membuat direktori proyek terpisah dan membuat inventaris dan file konfigurasi.
Tabel di bawah ini menunjukkan bagaimana kemungkinan lab saya diatur. Saya akan membuat file inventaris untuk penyiapan lab ini dan akan menjalankan modul ping untuk mendemonstrasikan cara kerja berbagai hal di file inventaris.
JENIS NODE | NAMA KODE | ALAMAT IP | Rasa OS |
Simpul Kontrol | controller.anslab.com | 192.168.10.3 | ubuntu/focal64 |
Node Terkelola | managed1.anslab.com | 192.168.10.4 | ubuntu/focal64 |
Node Terkelola | managed2.anslab.com | 192.168.10.5 | ubuntu/focal64 |
File Inventaris Tanpa Pengelompokan Eksplisit
File inventaris memiliki konsep yang disebut pengelompokan di mana Anda akan mengelompokkan sumber daya Anda dan menjalankan tugas terhadap grup itu. Itu akan berada di struktur berikut.
[group-name] Resource1 Resource2 .... Resource N
Anda dapat membuat file inventaris tanpa menggunakan grup. Dalam hal ini, Ansible akan menggunakan dua grup default "semua" dan "tidak dikelompokkan" .
- SEMUA KELOMPOK - Semua sumber daya yang tersedia di file inventaris secara default akan ditetapkan ke semua grup .
- TIDAK TERPISAH - Sumber daya yang bukan bagian dari grup yang ditentukan pengguna akan secara otomatis ditetapkan ke grup yang tidak dikelompokkan .
Saya telah membuat file inventaris tanpa grup apa pun. Sekarang, kedua node ini akan berada di bawah semua grup serta grup yang tidak dikelompokkan.
$ cat hosts
managed1.anslab.com
managed2.anslab.com
Anda dapat menjalankan perintah yang memungkinkan berikut untuk memeriksa daftar host di bawah semua dan grup yang tidak dikelompokkan.
$ ansible all --list-hosts hosts (2): managed1.anslab.com managed2.anslab.com
$ ansible ungrouped --list-hosts hosts (2): managed1.anslab.com managed2.anslab.com
File Inventaris Dengan Pengelompokan
Seperti yang telah diramalkan, pengelompokan adalah cara yang bagus untuk mengatur sumber daya Anda sehingga akan mudah bagi Anda untuk menjalankan tugas terhadap grup tertentu. Saya memiliki dua node yang dikelola dan mereka menjalankan Ubuntu 20.04LTS.
Katakanlah saya ingin mengelompokkan file inventaris saya berdasarkan jenis OS maka file inventaris akan terlihat seperti di bawah ini. Di sini ubuntu adalah nama grup.
[ubuntu]
managed1.anslab.com
managed2.anslab.com
Tugas dapat dijalankan terhadap grup ini.
$ ansible ubuntu -m ping -o managed1.anslab.com | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"} managed2.anslab.com | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}
Jika saya memeriksa grup "tidak dikelompokkan" sekarang, tidak akan ada host di sana.
$ ansible ungrouped --list-hosts
[WARNING]: No hosts matched, nothing to do
hosts (0):
Anda dapat membuat grup sebanyak yang Anda inginkan dalam file inventaris dan menggunakan nama sumber daya yang sama.
[ubuntu] managed1.anslab.com managed2.anslab.com [dev] managed1.anslab.com [test] managed2.anslab.com
$ ansible ubuntu -m ping -o $ ansible dev -m ping -o $ ansible test -m ping -o
File Inventaris Dengan Rentang
Bila Anda memiliki pola penamaan umum untuk sumber daya Anda, Anda dapat menggunakan rentang. Lihatlah contoh di bawah ini di mana Alih-alih mengulangi DNS, saya telah menggunakan rentang untuk mempersingkatnya.
[ubuntu]
managed[1:2].anslab.com
File Inventaris Dengan Grup Turunan
Anda dapat membuat grup dan menggunakan nama grup lain di bawahnya. Lihatlah contoh di bawah ini, saya memiliki grup ubuntu yang memiliki nama server saya. Saya telah membuat grup lain bernama server yang berisi grup ubuntu.
Penting bagi Anda untuk menambahkan :anak-anak ke nama grup jika tidak, grup server akan memperlakukan "ubuntu " sebagai nama server, bukan nama grup.
[ubuntu] managed[1:2].anslab.com [server:children] ubuntu
File Inventaris Dengan Host Vars &Grup Vars
File inventaris mendukung variabel host &grup. Variabel host tidak lain adalah variabel dan nilainya diteruskan ke host dalam file inventaris. Dalam konfigurasi di bawah ini saya memberi tahu Anda dapat menggunakan ostechnix sebagai pengguna my saya dan daripada menggunakan port ssh standar, gunakan port 2222 .
[ubuntu]
managed1.anslab.com ansible_user=ostechnix ansible_port=2222
managed2.anslab.com ansible_user=ostechnix ansible_port=2222
Grup vars sama dengan vars host tetapi variabel akan diterapkan ke seluruh grup alih-alih satu host. Anda dapat melihat dari konfigurasi di atas, ansible_user, dan ansible_port adalah sama untuk kedua node. Jadi Anda dapat membuat grup var di mana variabel akan diwarisi oleh semua node dalam grup. Anda perlu menambahkan :vars untuk menjadikan grup sebagai vars grup.
[ubuntu] managed1.anslab.com managed2.anslab.com [ubuntu:vars] ansible_user=ostechnix ansible_port=2222
Perhatian: Jika Anda memiliki grup var dan host var untuk node yang sama, maka host var akan diprioritaskan.
Ada banyak parameter inventaris yang dapat Anda gunakan dan Anda bisa mendapatkan daftarnya dari dokumen resmi .
File Inventaris Dengan Alias
Anda dapat membuat alias untuk sumber daya seperti di bawah ini. Di sini m1 dan m2 adalah alias.
[ubuntu] m1 ansible_host=managed1.anslab.com m2 ansible_host=managed2.anslab.com
Sekarang alias ini dapat digunakan untuk menjalankan beberapa tugas.
$ ansible m1 -m ping -o m1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"} $ ansible m2 -m ping -o m2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}
File Inventaris Dalam Format YAML
File inventaris juga dapat ditulis dalam format YAML. Apapun yang telah kita bahas di bagian sebelumnya ditulis dalam format YAML.
Gambar di bawah mewakili dua node dengan beberapa variabel host.

Gambar di bawah mewakili dua node dengan variabel grup.

Perintah Inventaris yang Dimungkinkan
Ansible memiliki perintah inventaris yang akan sangat membantu untuk melihat informasi file inventaris.
Untuk mendapatkan daftar opsi yang didukung, jalankan perintah bantuan.
$ ansible-inventory --help
Untuk mendapatkan detail inventaris dalam format grafik, gunakan --graph
bendera. Jika Anda memiliki file inventaris yang berbeda, Anda dapat menggunakan -i
tandai untuk secara eksplisit menunjuk ke file inventaris.
$ ansible-inventory --graph

Anda dapat mencetak informasi var host dan grup dengan meneruskan --vars
tandai bersama dengan --graph
bendera.
$ ansible-inventory --graph --vars

Saat Anda menggunakan --list
bendera, output akan dalam format JSON.
$ ansible-inventory -list

Anda bisa mendapatkan informasi tentang node tertentu menggunakan --host
bendera.
$ ansible-inventory --host managed1.anslab.com

Kesimpulan
Dalam artikel ini, kita telah melihat konsep penting yang membentuk inti dari arsitektur yang memungkinkan. Jika Anda seorang pemula, fokuslah untuk membangun inventaris dengan format ini dan selanjutnya Anda akan mengetahui lebih banyak tentang praktik terbaik saat Anda mulai mengerjakan proyek produksi.
Baca Selanjutnya:
- Otentikasi SSH dan Eskalasi Hak Istimewa yang Memungkinkan
- Memulai Perintah Ad Hoc yang Memungkinkan