Rumah > Artikel > Tutorial sistem > Pengenalan kepada Inventori Dinamik Ansible
Inventori Ansible sebenarnya terdiri daripada dua bahagian: Inventori statik dan Inventori Statik merujuk kepada hos dan kumpulan yang dinyatakan dalam fail /etc/ansible/hosts merujuk kepada mendapatkan senarai hos melalui skrip luaran dan mengikut keperluan ansible Format dikembalikan kepada arahan ansilbe. Bahagian ini secara amnya menggabungkan sistem pengurusan aset CMDB, sistem pemantauan zabbix, sistem pemasangan crobble, platform pengkomputeran awan, dll. untuk mendapatkan maklumat hos. Memandangkan sumber hos secara amnya meningkat atau berkurangan secara dinamik, sistem ini biasanya mengemas kini secara bijak. Kami boleh mengembalikan senarai hos melalui API atau mengakses pertanyaan perpustakaan yang disediakan oleh alatan ini.
Memandangkan Ansible menyokong format json apabila menerima skrip untuk mendapatkan maklumat hos secara dinamik, saya tidak akan mengambilnya daripada sistem lain di sini dan mencetak segmen maklumat hos dalam format json melalui sekeping kod:
#!/usr/bin/env python # coding=utf-8 import json host1ip = ['10.212.52.252','10.212.52.14'] host2ip = ['10.212.52.16'] group = 'test1' group2 = 'test2' hostdata = {group:{"hosts":host1ip},group2:{"hosts":host2ip}} print json.dumps(hostdata,indent=4)
Nota:
1. Bahagian hos mestilah dalam format senarai
2. Dalam baris data hos, bahagian "hos" boleh diabaikan, tetapi jika digunakan, ia mestilah "hos" dan tidak boleh menjadi rentetan lain seperti ‘‘senarai hos’’.
Selepas meninggalkan, anda boleh menulisnya seperti ini:
hostdata = {group:host1ip,group2:host2ip}
Hasil pelaksanaan kod ini secara langsung adalah seperti berikut:
[root@361way.com ~]# python twogroup.py { "test1": { "hosts": [ "10.212.52.252", "10.212.52.14" ] }, "test2": { "hosts": [ "10.212.52.16" ] } }
Dua kumpulan hos ditakrifkan di atas Kumpulan test1 mengandungi hos 10.212.52.252 dan 10.212.52.14, dan kumpulan test2 mengandungi hos 10.212.52.16. ansible boleh dipanggil melalui kaedah berikut:
[root@361way.com ~]# ansible -i twogroup.py test1 -m command -a 'uptime' -k SSH password: 10.212.52.252 | success | rc=0 >> 23:01pm up 24 days 8:24, 2 users, load average: 0.21, 0.35, 0.39 10.212.52.14 | success | rc=0 >> 23:08pm up 332 days 5:23, 2 users, load average: 0.00, 0.01, 0.05 [root@361way.com ~]# ansible -i twogroup.py test2 -m command -a 'uptime' -k SSH password: 10.212.52.16 | success | rc=0 >> 23:09pm up 332 days 6:00, 2 users, load average: 0.08, 0.06, 0.05
Dalam contoh fail konfigurasi hos statik, akan terdapat pembolehubah kumpulan (var), termasuk antara kumpulan, seperti ditunjukkan di bawah:
Jika anda mahu bahagian di atas, dapatkan pelaksanaan melalui skrip Format json yang dikembalikan selepas pelaksanaan hendaklah seperti yang ditunjukkan di bawah:
Format pemulangan kompleks seperti di atas biasanya tidak digunakan dalam persekitaran ad-hoc Kebanyakannya digunakan dalam ansible-playbook Ini kerana fail playbook kadangkala melibatkan pemindahan parameter vars.
Ini telah disebutkan pada permulaan artikel ini Kami memperoleh contoh daripada platform seperti tukang kasut dan cmdb. Memandangkan pemula (pengarang) ansible juga merupakan pencipta perisian tukang kasut, dokumen rasmi memberi kita contoh tukang kasut dan contoh mendapatkan maklumat hos daripada AWS. Seperti berikut:
Dapatkan kod maklumat hos pada tukang kasut
Dapatkan kod maklumat hos pada awan aws
Mengenai cara mendapatkan maklumat hos daripada AWS dan memasukkannya ke dalam pangkalan data, saya telah menulis bab berkaitan sebelum ini, anda juga boleh merujuk kepada catatan blog saya sebelum ini - Pengurusan Aset Hos AWS (artikel ini juga dilaksanakan dalam python tulen. ).
Dapatkan maklumat hos melalui zabbix api Saya juga menulis ringkasan zabbix (8) Zabbix api Jika anda ingin mendapatkan maklumat senarai hos melalui platform zabbix, anda juga boleh merujuknya.
, itu juga boleh menjadi hasil keluaran skrip lain. Berikut adalah ujian mudah:
[root@361way.com yaml]# ansible -i group.sh test1 -m command -a 'uptime' -k
SSH password:
10.212.52.16 | success | rc=0 >>
00:18am up 332 days 7:10, 2 users, load average: 0.00, 0.01, 0.05
10.212.52.14 | success | rc=0 >>
00:17am up 332 days 6:32, 2 users, load average: 0.01, 0.03, 0.05
10.212.52.252 | success | rc=0 >>
00:11am up 24 days 9:33, 2 users, load average: 0.49, 0.42, 0.41
[root@localhost yaml]# cat group.sh
#!/bin/bash
groups='''
{
"test1": {
"hosts": [
"10.212.52.252",
"10.212.52.14",
"10.212.52.16"
]
}
}
'''
echo $groups
, jika tidak, ralat akan dilaporkan, seperti berikut:
[root@361way.com yaml]# ansible -i hostjson.py AA -a 'uptime'
ERROR: The file hostjson.py looks like it should be an executable inventory script, but is not
marked executable. Perhaps you want to correct this with `chmod +x hostjson.py`?
Atas ialah kandungan terperinci Pengenalan kepada Inventori Dinamik Ansible. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!