[ English | русский | español | Deutsch | Indonesia | English (United Kingdom) ]

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.