Псевдонимы
Цитируя Псевдонимы инвентаризации:
inventory_hostname — это уникальный идентификатор узла в Ansible. Это может быть IP-адрес или имя хоста, а также просто «псевдоним» или краткое имя узла.
На хосте iocage от имени root остановите и уничтожьте все jail:
shell> iocage stop ALL * Stopping srv_1 + Executing prestop OK + Stopping services OK + Tearing down VNET OK + Removing devfs_ruleset: 1000 OK + Removing jail process OK + Executing poststop OK * Stopping srv_2 + Executing prestop OK + Stopping services OK + Tearing down VNET OK + Removing devfs_ruleset: 1001 OK + Removing jail process OK + Executing poststop OK * Stopping srv_3 + Executing prestop OK + Stopping services OK + Tearing down VNET OK + Removing devfs_ruleset: 1002 OK + Removing jail process OK + Executing poststop OK ansible_client is not running! shell> iocage destroy -f srv_1 srv_2 srv_3 Destroying srv_1 Destroying srv_2 Destroying srv_3
Создайте три jail VNET с интерфейсом DHCP на основе шаблона ansible_client. Используйте параметр --count:
shell> iocage create --short --template ansible_client --count 3 bpf=1 dhcp=1 vnet=1 1c11de2d successfully created! 9d94cc9e successfully created! 052b9557 successfully created!
Имена будут случайными. Запустите jail:
shell> iocage start ALL No default gateway found for ipv6. * Starting 052b9557 + Started OK + Using devfs_ruleset: 1000 (iocage generated default) + Configuring VNET OK + Using IP options: vnet + Starting services OK + Executing poststart OK + DHCP Address: 10.1.0.137/24 No default gateway found for ipv6. * Starting 1c11de2d + Started OK + Using devfs_ruleset: 1001 (iocage generated default) + Configuring VNET OK + Using IP options: vnet + Starting services OK + Executing poststart OK + DHCP Address: 10.1.0.146/24 No default gateway found for ipv6. * Starting 9d94cc9e + Started OK + Using devfs_ruleset: 1002 (iocage generated default) + Configuring VNET OK + Using IP options: vnet + Starting services OK + Executing poststart OK + DHCP Address: 10.1.0.115/24 Please convert back to a jail before trying to start ansible_client
Выведите список jail:
shell> iocage list -l +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ | JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL | +=====+==========+======+=======+======+=================+====================+=====+================+==========+ | 207 | 052b9557 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.137 | - | ansible_client | no | +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ | 208 | 1c11de2d | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.146 | - | ansible_client | no | +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ | 209 | 9d94cc9e | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.115 | - | ansible_client | no | +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
Задайте примечания. Тег alias будет использоваться для создания псевдонимов инвентаризации:
shell> iocage set notes="vmm=iocage_02 project=foo alias=srv_1" 052b9557 notes: none -> vmm=iocage_02 project=foo alias=srv_1 shell> iocage set notes="vmm=iocage_02 project=foo alias=srv_2" 1c11de2d notes: none -> vmm=iocage_02 project=foo alias=srv_2 shell> iocage set notes="vmm=iocage_02 project=bar alias=srv_3" 9d94cc9e notes: none -> vmm=iocage_02 project=bar alias=srv_3
Обновите конфигурацию инвентаризации. Установите для параметра inventory_hostname_tag значение alias. Этот тег сохраняет значение псевдонима. Параметр get_properties должен быть включен. Например, файл hosts/02_iocage.yml содержит:
plugin: community.general.iocage
host: 10.1.0.73
user: admin
get_properties: true
inventory_hostname_tag: alias
hooks_results:
- /var/db/dhclient-hook.address.epair0b
compose:
ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
iocage_tags: dict(iocage_properties.notes | split | map('split', '='))
keyed_groups:
- prefix: vmm
key: iocage_tags.vmm
- prefix: project
key: iocage_tags.project
Отобразите теги и группы. Создайте плейбук pb-test-groups.yml со следующим содержимым:
- hosts: all
remote_user: admin
vars:
ansible_python_interpreter: auto_silent
tasks:
- debug:
var: iocage_tags
- debug:
msg: |
{% for group in groups %}
{{ group }}: {{ groups[group] }}
{% endfor %}
run_once: true
Запустите плейбук:
shell> ansible-playbook -i hosts/02_iocage.yml pb-test-groups.yml
PLAY [all] **********************************************************************************************************
TASK [debug] ********************************************************************************************************
ok: [srv_1] =>
iocage_tags:
alias: srv_1
project: foo
vmm: iocage_02
ok: [srv_2] =>
iocage_tags:
alias: srv_2
project: foo
vmm: iocage_02
ok: [srv_3] =>
iocage_tags:
alias: srv_3
project: bar
vmm: iocage_02
TASK [debug] ********************************************************************************************************
ok: [srv_1] =>
msg: |-
all: ['srv_1', 'srv_2', 'srv_3']
ungrouped: []
vmm_iocage_02: ['srv_1', 'srv_2', 'srv_3']
project_foo: ['srv_1', 'srv_2']
project_bar: ['srv_3']
PLAY RECAP **********************************************************************************************************
srv_1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
srv_2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
srv_3 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/docsite/guide_iocage_inventory_aliases.html