Spec-Zone.ru › Ansible

Инвентаризация 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

Включение или отключение кэширования исходных данных инвентаризации; для работы требуется настроить плагин кэширования.

Варианты:

  • false ← (по умолчанию)
  • true

Конфигурация:

  • Запись INI:

    [inventory]
    cache = false
    
  • Переменная среды: ANSIBLE_INVENTORY_CACHE

cache_connection

string

Данные подключения к кэшу или путь к нему; подробности см. в документации плагина кэширования.

Конфигурация:

  • Записи INI:

    [defaults]
    fact_caching_connection = VALUE
    
    [inventory]
    cache_connection = VALUE
    
  • Переменная среды: ANSIBLE_CACHE_PLUGIN_CONNECTION
  • Переменная среды: ANSIBLE_INVENTORY_CACHE_CONNECTION

cache_plugin

string

Плагин кэширования для исходных данных инвентаризации.

По умолчанию: "memory"

Конфигурация:

  • Записи INI:

    [defaults]
    fact_caching = memory
    
    [inventory]
    cache_plugin = memory
    
  • Переменная среды: ANSIBLE_CACHE_PLUGIN
  • Переменная среды: ANSIBLE_INVENTORY_CACHE_PLUGIN

cache_prefix

string

Префикс для файлов/таблиц плагина кэширования.

По умолчанию: "ansible_inventory_"

Конфигурация:

  • Записи INI:

    [defaults]
    fact_caching_prefix = ansible_inventory_
    
    [inventory]
    cache_prefix = ansible_inventory_
    
  • Переменная среды: ANSIBLE_CACHE_PLUGIN_PREFIX
  • Переменная среды: ANSIBLE_INVENTORY_CACHE_PLUGIN_PREFIX

cache_timeout

integer

Длительность хранения кэша в секундах.

По умолчанию: 3600

Конфигурация:

  • Записи INI:

    [defaults]
    fact_caching_timeout = 3600
    
    [inventory]
    cache_timeout = 3600
    
  • Переменная среды: ANSIBLE_CACHE_PLUGIN_TIMEOUT
  • Переменная среды: ANSIBLE_INVENTORY_CACHE_TIMEOUT

compose

dictionary

Создание переменных на основе выражений Jinja2.

По умолчанию: {}

exclude_nodes

boolean

Исключить узлы Proxmox и группу узлов из вывода инвентаризации.

Варианты:

  • false ← (по умолчанию)
  • true

facts_prefix

string

Префикс для фактов конфигурации LXC/QEMU.

По умолчанию: "proxmox_"

filters

list / elements=string

Список шаблонов Jinja для фильтрации узлов.

Если включён строгий режим, любая ошибка при составлении фильтра узлов приведёт к возникновению AnsibleError; в противном случае узел будет проигнорирован.

В фильтрах можно использовать факты, собранные при значении want_facts, равном true.

Если значение want_facts равно false, полные факты недоступны, и в фильтрах можно использовать только ограниченный набор фактов: proxmox_vmid, proxmox_name, proxmox_status, proxmox_vmtype, proxmox_tags.

По умолчанию: []

group_prefix

string

Префикс для групп Proxmox.

По умолчанию: "proxmox_"

groups

dictionary

Добавление узлов в группу на основе условных выражений Jinja2.

По умолчанию: {}

keyed_groups

list / elements=dictionary

Добавление узлов в группу на основе значений переменной.

По умолчанию: []

default_value

string

добавлено в ansible-core 2.12

Значение по умолчанию, если значение переменной узла равно None или является пустой строкой.

Этот параметр несовместим с keyed_groups[].trailing_separator.

key

string

Ключ входного словаря, используемый для создания групп.

parent_group

string

Родительская группа для группы, созданной по ключу.

prefix

string

Имя группы, созданной по ключу, будет начинаться с этого префикса.

По умолчанию: ""

separator

string

Разделитель, используемый для формирования имени группы, созданной по ключу.

По умолчанию: "_"

trailing_separator

boolean

добавлено в ansible-core 2.12

Установите для этого параметра значение false, чтобы опустить keyed_groups[].separator после переменной узла, если её значение равно None или является пустой строкой.

Этот параметр несовместим с keyed_groups[].default_value.

Варианты:

  • false
  • true ← (по умолчанию)

leading_separator

boolean

добавлено в ansible-core 2.11

Используется совместно с keyed_groups.

По умолчанию имя группы, созданной по ключу, для которой не задан префикс или разделитель, начинается с символа подчёркивания.

Это связано с тем, что префиксом по умолчанию является "", а разделителем по умолчанию — "_".

Установите для этого параметра значение false, чтобы опустить начальное подчёркивание (или другой разделитель), если префикс не задан.

Если имя группы получено из сопоставления, разделитель всё равно используется для объединения элементов.

Чтобы вообще не использовать разделитель в имени группы, задайте для группы, созданной по ключу, пустую строку в качестве разделителя.

Варианты:

  • false
  • true ← (по умолчанию)

password

string

Пароль для аутентификации в Proxmox.

Если значение не указано в конфигурации инвентаризации, вместо него будет использоваться значение переменной среды PROXMOX_PASSWORD.

Для указания значения password можно использовать шаблонизацию.

Если пароль не указан, необходимо задать token_id и token_secret.

Конфигурация:

  • Переменная среды: PROXMOX_PASSWORD

plugin

string / обязательный

Имя этого плагина; для распознавания плагином самого себя здесь всегда должно быть указано community.proxmox.proxmox.

Варианты:

  • "community.proxmox.proxmox"

qemu_extended_statuses

boolean

Для работы требуется установить для want_facts значение true. Это позволит различать состояния paused и prelaunch виртуальных машин QEMU.

Будет создано несколько групп [с префиксом group_prefix] prelaunch и paused.

Варианты:

  • false ← (по умолчанию)
  • true

strict

boolean

Если yes, считать некорректные записи критической ошибкой; в противном случае пропускать их и продолжать выполнение.

Поскольку в выражениях можно использовать факты, они могут быть доступны не всегда; по умолчанию такие ошибки игнорируются.

Варианты:

  • false ← (по умолчанию)
  • true

token_id

string

Идентификатор токена для аутентификации в Proxmox.

Если значение не указано в конфигурации инвентаризации, вместо него будет использоваться значение переменной среды PROXMOX_TOKEN_ID.

Для аутентификации с помощью токена также необходимо указать token_secret. Если не указаны token_id и token_secret, вместо них необходимо задать пароль.

Обязательно предоставьте токену явные разрешения pve или отключите «разделение привилегий», чтобы использовать привилегии пользователя.

Конфигурация:

  • Переменная среды: PROXMOX_TOKEN_ID

token_secret

string

Секрет токена для аутентификации в Proxmox.

Если значение не указано в конфигурации инвентаризации, вместо него будет использоваться значение переменной среды PROXMOX_TOKEN_SECRET.

Для аутентификации с помощью токена также необходимо указать token_id. Если не указаны token_id и token_secret, вместо них необходимо задать пароль.

Конфигурация:

  • Переменная среды: PROXMOX_TOKEN_SECRET

url

string

URL-адрес кластера Proxmox.

Если значение не указано в конфигурации инвентаризации, вместо него будет использоваться значение переменной среды PROXMOX_URL.

Для указания значения url можно использовать шаблонизацию.

По умолчанию: "http://localhost:8006"

Конфигурация:

  • Переменная среды: PROXMOX_URL

use_extra_vars

boolean

добавлено в ansible-core 2.11

Объединить дополнительные переменные с доступными переменными для композиции (наивысший приоритет).

Варианты:

  • false ← (по умолчанию)
  • true

Конфигурация:

  • Запись INI:

    [inventory_plugins]
    use_extra_vars = false
    
  • Переменная среды: ANSIBLE_INVENTORY_USE_EXTRA_VARS

user

string / обязательный

Пользователь для аутентификации в Proxmox.

Если значение не указано в конфигурации инвентаризации, вместо него будет использоваться значение переменной среды PROXMOX_USER.

Для указания значения user можно использовать шаблонизацию.

Конфигурация:

  • Переменная среды: PROXMOX_USER

validate_certs

boolean

Проверять SSL-сертификат при использовании HTTPS.

Варианты:

  • false
  • true ← (по умолчанию)

want_facts

boolean

Собирать факты конфигурации LXC/QEMU.

Если для want_facts задано значение true, для виртуальных машин QEMU можно получить более подробные сведения о состоянии, помимо состояний «запущена» и «остановлена». Сейчас, если виртуальная машина запущена и приостановлена, её состояние будет «запущена», а сама машина попадёт в группу running, однако её фактическое состояние будет «приостановлена». О том, как получить реальное состояние, см. qemu_extended_statuses.

Варианты:

  • false ← (по умолчанию)
  • true

want_post_filter_facts

boolean

Определяет, собирать ли факты после фильтрации узлов (в отличие от сбора всех фактов всех узлов до фильтрации, когда для want_facts задано значение true).

Это может быть полезно, если вы хотите отфильтровать узлы по ограниченному набору доступных критериев, но при этом получить доступ ко всем фактам после фильтрации.

Если для want_facts задано значение true, факты собираются до фильтрации, и этот параметр игнорируется.

Варианты:

  • false ← (по умолчанию)
  • true

want_proxmox_nodes_ansible_host

boolean

Определяет, задавать ли ansible_host для узлов Proxmox.

Если установлено значение true (по умолчанию), будет использоваться первый доступный интерфейс. Он может отличаться от ожидаемого.

Варианты:

  • false ← (по умолчанию)
  • true

Примечание

Записи конфигурации, перечисленные выше для каждого типа записи (переменная 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

Авторы

  • Jeffrey van Pelt (@Thulium-Drake)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Сообщить о проблеме
  • Связь

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API