Инвентаризация community.proxmox.proxmox – источник инвентаризации Proxmox
Примечание
Этот плагин инвентаризации входит в коллекцию community.proxmox (версия 1.6.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.proxmox. Для использования этого плагина инвентаризации необходимы дополнительные требования; подробности см. в разделе Требования.
Чтобы использовать его в плейбуке, укажите: community.proxmox.proxmox.
Краткое описание
- Получение узлов инвентаризации из кластера Proxmox PVE.
- Использует файл конфигурации в качестве источника инвентаризации; его имя должно заканчиваться на
.proxmox.ymlили.proxmox.yaml - Получает первый сетевой интерфейс с IP-адресом для узлов Proxmox.
- Может получать конфигурацию LXC/QEMU в виде фактов.
Требования
Следующие требования должны быть выполнены на локальном узле контроллера, который запускает эту инвентаризацию.
- requests >= 1.1
Параметры
Параметр | Комментарии |
|---|---|
cache boolean | Включение или отключение кэширования исходных данных инвентаризации; для работы требуется настроить плагин кэширования. Варианты:
Конфигурация:
|
cache_connection string | Данные подключения к кэшу или путь к нему; подробности см. в документации плагина кэширования. Конфигурация:
|
cache_plugin string | Плагин кэширования для исходных данных инвентаризации. По умолчанию: Конфигурация:
|
cache_prefix string | Префикс для файлов/таблиц плагина кэширования. По умолчанию: Конфигурация:
|
cache_timeout integer | Длительность хранения кэша в секундах. По умолчанию: Конфигурация:
|
compose dictionary | Создание переменных на основе выражений Jinja2. По умолчанию: |
exclude_nodes boolean | Исключить узлы Proxmox и группу узлов из вывода инвентаризации. Варианты:
|
facts_prefix string | Префикс для фактов конфигурации LXC/QEMU. По умолчанию: |
filters list / elements=string | Список шаблонов Jinja для фильтрации узлов. Если включён строгий режим, любая ошибка при составлении фильтра узлов приведёт к возникновению AnsibleError; в противном случае узел будет проигнорирован. В фильтрах можно использовать факты, собранные при значении Если значение По умолчанию: |
group_prefix string | Префикс для групп Proxmox. По умолчанию: |
groups dictionary | Добавление узлов в группу на основе условных выражений Jinja2. По умолчанию: |
keyed_groups list / elements=dictionary | Добавление узлов в группу на основе значений переменной. По умолчанию: |
|
default_value string добавлено в ansible-core 2.12 |
Значение по умолчанию, если значение переменной узла равно Этот параметр несовместим с |
|
key string |
Ключ входного словаря, используемый для создания групп. |
|
parent_group string |
Родительская группа для группы, созданной по ключу. |
|
prefix string |
Имя группы, созданной по ключу, будет начинаться с этого префикса. По умолчанию: |
|
separator string |
Разделитель, используемый для формирования имени группы, созданной по ключу. По умолчанию: |
|
trailing_separator boolean добавлено в ansible-core 2.12 |
Установите для этого параметра значение Этот параметр несовместим с Варианты:
|
leading_separator boolean добавлено в ansible-core 2.11 | Используется совместно с По умолчанию имя группы, созданной по ключу, для которой не задан префикс или разделитель, начинается с символа подчёркивания. Это связано с тем, что префиксом по умолчанию является Установите для этого параметра значение Если имя группы получено из сопоставления, разделитель всё равно используется для объединения элементов. Чтобы вообще не использовать разделитель в имени группы, задайте для группы, созданной по ключу, пустую строку в качестве разделителя. Варианты:
|
password string | Пароль для аутентификации в Proxmox. Если значение не указано в конфигурации инвентаризации, вместо него будет использоваться значение переменной среды Для указания значения Если пароль не указан, необходимо задать Конфигурация:
|
plugin string / обязательный | Имя этого плагина; для распознавания плагином самого себя здесь всегда должно быть указано Варианты:
|
qemu_extended_statuses boolean | Для работы требуется установить для Будет создано несколько групп [с префиксом Варианты:
|
strict boolean | Если Поскольку в выражениях можно использовать факты, они могут быть доступны не всегда; по умолчанию такие ошибки игнорируются. Варианты:
|
token_id string | Идентификатор токена для аутентификации в Proxmox. Если значение не указано в конфигурации инвентаризации, вместо него будет использоваться значение переменной среды Для аутентификации с помощью токена также необходимо указать Обязательно предоставьте токену явные разрешения pve или отключите «разделение привилегий», чтобы использовать привилегии пользователя. Конфигурация:
|
token_secret string | Секрет токена для аутентификации в Proxmox. Если значение не указано в конфигурации инвентаризации, вместо него будет использоваться значение переменной среды Для аутентификации с помощью токена также необходимо указать Конфигурация:
|
url string | URL-адрес кластера Proxmox. Если значение не указано в конфигурации инвентаризации, вместо него будет использоваться значение переменной среды Для указания значения По умолчанию: Конфигурация:
|
use_extra_vars boolean добавлено в ansible-core 2.11 | Объединить дополнительные переменные с доступными переменными для композиции (наивысший приоритет). Варианты:
Конфигурация:
|
user string / обязательный | Пользователь для аутентификации в Proxmox. Если значение не указано в конфигурации инвентаризации, вместо него будет использоваться значение переменной среды Для указания значения Конфигурация:
|
validate_certs boolean | Проверять SSL-сертификат при использовании HTTPS. Варианты:
|
want_facts boolean | Собирать факты конфигурации LXC/QEMU. Если для Варианты:
|
want_post_filter_facts boolean | Определяет, собирать ли факты после фильтрации узлов (в отличие от сбора всех фактов всех узлов до фильтрации, когда для Это может быть полезно, если вы хотите отфильтровать узлы по ограниченному набору доступных критериев, но при этом получить доступ ко всем фактам после фильтрации. Если для Варианты:
|
want_proxmox_nodes_ansible_host boolean | Определяет, задавать ли Если установлено значение Варианты:
|
Примечание
Записи конфигурации, перечисленные выше для каждого типа записи (переменная Ansible, переменная среды и т. д.), упорядочены от низкого приоритета к высокому. Например, переменная, расположенная ниже в списке, переопределяет переменную, расположенную выше. Типы записей также упорядочены по приоритету от низкого к высокому. Например, запись ansible.cfg (расположенная выше в списке) переопределяется переменной Ansible (расположенной ниже в списке).
Примечания
Примечание
- На этом этапе инвентаризация ещё не завершена, поэтому автоматически заполненные группы
allиungroupedбудут содержать только то, что в них явно добавили предыдущие источники инвентаризации. - Во время формирования инвентаризации «магические переменные» среды выполнения недоступны. Например,
groupsиhostvarsещё не существуют.
Примеры
---
# Minimal example which will not gather additional facts for QEMU/LXC guests
# By not specifying a URL the plugin will attempt to connect to the controller host on port 8006
# my.proxmox.yml
plugin: community.proxmox.proxmox
user: ansible@pve
password: secure
# Note that this can easily give you wrong values as ansible_host. See further below for
# an example where this is set to `false` and where ansible_host is set with `compose`.
want_proxmox_nodes_ansible_host: true
---
# Instead of login with password, proxmox supports api token authentication since release 6.2.
plugin: community.proxmox.proxmox
user: ci@pve
token_id: gitlab-1
token_secret: fa256e9c-26ab-41ec-82da-707a2c079829
# The secret can also be a vault string or passed via the environment variable TOKEN_SECRET.
token_secret: !vault |
$ANSIBLE_VAULT;1.1;AES256
62353634333163633336343265623632626339313032653563653165313262343931643431656138
6134333736323265656466646539663134306166666237630a653363623262636663333762316136
34616361326263383766366663393837626437316462313332663736623066656237386531663731
3037646432383064630a663165303564623338666131353366373630656661333437393937343331
32643131386134396336623736393634373936356332623632306561356361323737313663633633
6231313333666361656537343562333337323030623732323833
---
# More complete example demonstrating the use of 'want_facts' and the constructed options
# Note that using facts returned by 'want_facts' in constructed options requires 'want_facts=true'
# my.proxmox.yml
plugin: community.proxmox.proxmox
url: http://pve.domain.com:8006
user: ansible@pve
password: secure
want_facts: true
keyed_groups:
# proxmox_tags_parsed is an example of a fact only returned when 'want_facts=true'
- key: proxmox_tags_parsed
separator: ""
prefix: group
groups:
webservers: "'web' in (proxmox_tags_parsed|list)"
mailservers: "'mail' in (proxmox_tags_parsed|list)"
compose:
ansible_port: 2222
# Note that this can easily give you wrong values as ansible_host. See further below for
# an example where this is set to `false` and where ansible_host is set with `compose`.
want_proxmox_nodes_ansible_host: true
---
# Using the inventory to allow ansible to connect via the first IP address of the VM / Container
# (Default is connection by name of QEMU/LXC guests)
# Note: my_inv_var demonstrates how to add a string variable to every host used by the inventory.
# my.proxmox.yml
plugin: community.proxmox.proxmox
url: http://192.168.1.2:8006
user: ansible@pve
password: secure
validate_certs: false # only do this when you trust the network!
want_facts: true
want_proxmox_nodes_ansible_host: false
compose:
ansible_host: proxmox_ipconfig0.ip | default(proxmox_net0.ip) | ipaddr('address')
my_inv_var_1: "'my_var1_value'"
my_inv_var_2: >
"my_var_2_value"
---
# Specify the url, user and password using templating
# my.proxmox.yml
plugin: community.proxmox.proxmox
url: "{{ lookup('ansible.builtin.ini', 'url', section='proxmox', file='file.ini') }}"
user: "{{ lookup('ansible.builtin.env','PM_USER') | default('ansible@pve') }}"
password: "{{ lookup('community.proxmox.random_string', base64=True) }}"
# Note that this can easily give you wrong values as ansible_host. See further up for
# an example where this is set to `false` and where ansible_host is set with `compose`.
want_proxmox_nodes_ansible_host: true
Ссылки на коллекцию
© 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/proxmox/proxmox_inventory.html