[ English | русский | español | Indonesia | English (United Kingdom) | Deutsch ]
Menghasilkan Inventory¶
The script that creates the inventory is located at
inventory/dynamic_inventory.py
and installed into the ansible-runtime
virtualenv as openstack-ansible-inventory
.
Bagian ini menjelaskan cara menjalankan inventory, dan bagaimana Anda dapat menjalankannya secara manual untuk melihat perilakunya.
Menjalankan skrip dynamic_inventory.py secara manual¶
Saat menjalankan perintah Ansible (seperti ansible
, ansible-playbook
atau openstack-ansible
) Kemungkinan secara otomatis menjalankan skrip dynamic_inventory.py
dan menggunakan outputnya sebagai inventaris.
Jalankan perintah berikut:
# from the root folder of cloned OpenStack-Ansible repository
inventory/dynamic_inventory.py --config /etc/openstack_deploy/
Dynamic inventory script is also installed inside virtualenv as a script. So alternatively you can run following:
source /opt/ansible-runtime/bin/activate
openstack-ansible-inventory --config /etc/openstack_deploy/
Seruan ini berguna saat menguji perubahan pada skrip inventory dinamis.
Inputs¶
dynamic_inventory.py
mengambil argumen `` --config`` untuk direktori yang menyimpan konfigurasi untuk membuat inventory. Jika tidak ditentukan, standarnya adalah /etc/openstack_deploy/
.
Selain argumen ini, kerangka lingkungan dasar disediakan di direktori inventory/env.d
dari basis kode OpenStack-Ansible.
Jika direktori env.d
ditemukan di direktori yang ditentukan oleh `` --config``, isinya akan ditambahkan ke lingkungan basis, menggantikan semua konten sebelumnya jika terjadi konflik.
Catatan
Di semua versi sebelum 2023.2, argumen ini adalah --file
.
File berikut harus ada di direktori konfigurasi:
openstack_user_config.yml
Selain itu, konfigurasi atau lingkungan dapat tersebar di antara dua subdirektori tambahan:
conf.d
env.d
(untuk penyesuaian lingkungan)
Skrip inventory dinamis melakukan hal berikut:
Menghasilkan nama setiap container yang menjalankan layanan
Membuat pemetaan kontainer dan alamat IP
Tetapkan containers untuk host fisik
Sebagai contoh, pertimbangkan kutipan berikut dari openstack_user_config.yml
:
identity_hosts:
infra01:
ip: 10.0.0.10
infra02:
ip: 10.0.0.11
infra03:
ip: 10.0.0.12
Kamus identity_hosts
mendefinisikan kelompok inventaris yang mungkin bernama identity_hosts
yang berisi tiga host infra. File konfigurasi inventory/env.d/keystone.yml
mendefinisikan grup inventaris tambahan yang mungkin untuk container yang disebarkan ke tiga host yang dinamai dengan awalan infra.
Perhatikan bahwa layanan apa pun yang ditandai dengan is_metal: true
akan berjalan pada host fisik yang dialokasikan dan tidak dalam sebuah container. Untuk contoh is_metal: true
yang digunakan merujuk ke inventory/env.d/cinder.yml
di bagian container_skel
.
Untuk lebih jelasnya, lihat Mengkonfigurasi inventory.
Outputs¶
Setelah dieksekusi, skrip akan menampilkan file openstack_inventory.json
ke direktori yang ditentukan dengan argumen --config
. Ini digunakan sebagai sumber kebenaran untuk berjalan berulang (repeated run).
Peringatan
File openstack_inventory.json
adalah sumber kebenaran untuk lingkungan. Menghapus ini dalam lingkungan produksi berarti bahwa porsi UUID dari nama container akan dibuat ulang, yang kemudian menghasilkan container baru yang dibuat. Kontainer yang dibuat di bawah versi sebelumnya tidak akan lagi dikenali oleh Ansible, bahkan jika bisa dicapai melalui SSH.
Struktur JSON yang sama dicetak ke stdout, yang dikonsumsi oleh Ansible sebagai inventory untuk playbook.
Memeriksa kesalahan konfigurasi inventory¶
Menggunakan flag --check
saat menjalankan dynamic_inventory.py
akan menjalankan proses pembuatan inventory dan mencari kesalahan yang diketahui, tetapi tidak menulis file apa pun ke disk.
Jika ada grup yang didefinisikan dalam file openstack_user_config.yml
atau conf.d
tidak ditemukan di lingkungan, peringatan akan dimunculkan.
Pemeriksaan ini tidak melakukan validasi sintaks YAML, meskipun akan gagal jika ada kesalahan yang tidak dapat diurai.
Menulis log debug¶
Parameter --debug/-d
memungkinkan penulisan file log terperinci untuk debugging perilaku skrip inventaris. Output ditulis ke inventory.log
di direktori kerja saat ini.
File inventory.log
ditambahkan ke, bukan ditimpa.
Seperti --check
, flag ini tidak dipanggil saat menjalankan dari ansible.
Running with tox¶
In some cases you might want to generate inventory on operator local machines
after altering openstack_user_config.yml or env.d/conf.d files. Given that
you already have openstack_deploy
directory on such machine, you can create
tox.ini file in that directory with following content:
[tox]
envlist = generate_inventory
[testenv]
skip_install = True
usedevelop = True
allowlist_externals =
bash
[testenv:generate_inventory]
basepython = python3
deps = -rhttps://opendev.org/openstack/openstack-ansible/raw/branch/master/requirements.txt
install_command =
pip install -c https://releases.openstack.org/constraints/upper/master {packages} -e git+https://opendev.org/openstack/openstack-ansible@master\#egg=openstack-ansible
commands =
openstack-ansible-inventory --config {toxinidir}/openstack_deploy
Then you can run a command to generate inventory using tox:
tox -e generate_inventory
As a result you will get your openstack_user_config.json updated. You can use this method also to verify validity of the inventory.