Rumah > Tutorial sistem > LINUX > Pengenalan kepada Inventori Dinamik Ansible

Pengenalan kepada Inventori Dinamik Ansible

王林
Lepaskan: 2024-08-24 10:44:02
asal
916 orang telah melayarinya

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.

1. Contoh paling mudah

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)
Salin selepas log masuk

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}
Salin selepas log masuk

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"
]
}
}
Salin selepas log masuk

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
Salin selepas log masuk
2. Contoh kompleks

Dalam contoh fail konfigurasi hos statik, akan terdapat pembolehubah kumpulan (var), termasuk antara kumpulan, seperti ditunjukkan di bawah:

Ansible Dynamic Inventory 介绍

Jika anda mahu bahagian di atas, dapatkan pelaksanaan melalui skrip Format json yang dikembalikan selepas pelaksanaan hendaklah seperti yang ditunjukkan di bawah:

Ansible Dynamic Inventory 介绍

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.

3. Dapatkan contoh hos daripada platform pihak ketiga

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.

4
1. Skrip yang dipanggil selepas parameter ansible -i tidak semestinya fail py

, ​​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
Salin selepas log masuk

2 Skrip yang ditentukan oleh parameter -i perlu mempunyai kebenaran boleh laku

, 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`?
Salin selepas log masuk

Atas ialah kandungan terperinci Pengenalan kepada Inventori Dinamik Ansible. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:linuxprobe.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan