Spec-Zone.ru › Ansible

community.vmware.vmware_vm_inventory инвентаризация — источник инвентаризации VMware Guest

Примечание

Этот плагин инвентаризации входит в состав коллекции community.vmware (версия 4.7.1).

У вас, возможно, уже установлена эта коллекция, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.vmware. Для использования этого плагина инвентаризации требуются дополнительные компоненты. Подробности см. в разделе Требования.

Для использования в книге задач укажите: community.vmware.vmware_vm_inventory.

  • Обзор
  • Требования
  • Параметры
  • Примеры

Обзор

  • Получение виртуальных машин в качестве узлов инвентаризации из среды VMware.
  • Использует любой файл, заканчивающийся на vmware.yml, vmware.yaml, vmware_vm_inventory.yml или vmware_vm_inventory.yaml, в качестве файла конфигурации YAML.

Требования

Ниже перечислены требования к локальному контрольному узлу, на котором выполняется эта инвентаризация.

  • requests >= 2.3
  • vSphere Automation SDK — для функции тегов
END_OF_DOCUMENT_MARKER

Параметры

Параметр

Комментарии

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.

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

filters

list / elements=string

Этот параметр позволяет фильтровать хосты на стороне клиента с использованием шаблонизации jinja.

При появлении фильтрации на стороне сервера, следует отдавать предпочтение ей.

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

groups

dictionary

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

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

hostname

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

Имя сервера vCenter или ESXi.

Настройка:

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

hostnames

list / elements=string

Список шаблонов в порядке приоритета для составления inventory_hostname.

Игнорирует шаблон, если в результате получилась пустая строка или значение None.

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

По умолчанию: ["config.name + \"_\" + config.uuid"]

keyed_groups

list / elements=dictionary

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

По умолчанию: [{"key": "config.guestId", "separator": ""}, {"key": "summary.runtime.powerState", "separator": ""}]

default_value

string

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

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

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

key

string

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

parent_group

string

родительская группа для группы по ключу

prefix

string

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

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

END_OF_DOCUMENT_MARKER

Разделитель

строка

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

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

trailing_separator

логическое

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

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

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

Варианты:

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

leading_separator

логическое

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

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

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

Это потому, что по умолчанию префикс равен “”, а разделитель равен “_”.

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

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

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

Варианты:

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

пароль

строка / обязательно

Пароль пользователя vSphere.

Поддерживает зашифрованные в хранилище переменные.

Поддерживает Jinja для шаблонизации значения

Настройка:

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

порт

целое число

Номер порта, используемый для подключения к vCenter или ESXi Server.

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

Настройка:

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

свойства

список / элементы=строка

Укажите список свойств схемы VMware, связанных с виртуальной машиной.

Эти свойства будут заполнены в hostvars данной виртуальной машины.

Каждое значение в списке может быть путем к определенному свойству объекта виртуальной машины или путем к коллекции объектов виртуальных машин.

config.name, config.uuid являются обязательными свойствами, если hostnames установлено по умолчанию.

config.guestId, summary.runtime.powerState являются обязательными, если keyed_groups установлено по умолчанию.

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

Помимо свойств виртуальной машины, следующие являются специальными значениями

Используйте customValue для заполнения пользовательских атрибутов виртуальной машины. customValue поддерживается только vCenter, а не ESXi.

Используйте all для заполнения всех свойств виртуальной машины. Значение all является длительной операцией, используйте только в крайних случаях.

Дополнительные атрибуты виртуальных машин VMware, которые можно использовать в качестве свойств, см. на https://docs.ansible.com/ansible/latest/collections/community/vmware/docsite/vmware_scenarios/vmware_inventory_vm_attributes.html

По умолчанию: ["name", "config.cpuHotAddEnabled", "config.cpuHotRemoveEnabled", "config.instanceUuid", "config.hardware.numCPU", "config.template", "config.name", "config.uuid", "guest.hostName", "guest.ipAddress", "guest.guestId", "guest.guestState", "runtime.maxMemoryUsage", "customValue", "summary.runtime.powerState", "config.guestId"]

proxy_host

строка

Адрес прокси-сервера, который будет получать все запросы HTTPS и перенаправлять их.

Формат - имя хоста или IP-адрес.

Настройка:

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

proxy_port

целое число

Порт HTTP-прокси, который будет получать все запросы HTTPS и перенаправлять их.

Настройка:

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

ресурсы

список / элементы=словарь

Список ресурсов для ограничения области поиска.

Каждый элемент ресурса представлен ровно одной парой 'vim_type_snake_case:list of resource names и необязательными вложенными ресурсами

Имя ключа основано на змеином регистре имени типа vim; например host_system соответствует vim.HostSystem

См. Типы VIM

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

строгий

логическое

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

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

Варианты:

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

подсвойства

список / элементы=словарь

добавлен в community.vmware 4.2.0

Список подсвойств из обычного свойства.

Эти подсвойства также будут заполнены в hostvars данной виртуальной машины.

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

свойство

строка / обязательно

Имя свойства

subelements

список / элементы=строка

Список подэлементов

use_extra_vars

boolean

added in ansible-core 2.11

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

Варианты:

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

Настройка:

  • Запись INI:

    [inventory_plugins]
    use_extra_vars = false
    
  • Переменная окружения: ANSIBLE_INVENTORY_USE_EXTRA_VARS

username

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

Имя пользователя vSphere.

Принимает зашифрованную переменную vault.

Принимает Jinja для шаблонизации значения

Настройка:

  • Переменная окружения: VMWARE_USER
  • Переменная окружения: VMWARE_USERNAME

validate_certs

boolean

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

Установлено в false когда сертификаты не доверенны.

Варианты:

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

Настройка:

  • Переменная окружения: VMWARE_VALIDATE_CERTS

with_nested_properties

boolean

Этот параметр преобразует имена сжатых свойств в вложенный словарь.

Варианты:

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

with_path

boolean

Включить путь виртуальных машин.

Установите этот параметр в строковое значение, чтобы заменить корневое имя на ‘Центры обработки данных’.

Варианты:

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

with_sanitized_property_name

boolean

Этот параметр позволяет очистить имена свойств для создания безопасных имён свойств для использования в Ansible.

Также преобразует имя свойства в нижний регистр с дефисами.

Варианты:

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

with_tags

boolean

Включить теги и связанные с ними виртуальные машины.

Требуется библиотека 'vSphere Automation SDK' для установки на указанной машине контроллера.

Пожалуйста, ознакомьтесь со следующими URL-адресами для шагов установки

https://code.vmware.com/web/sdk/7.0/vsphere-automation-python

Варианты:

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

Примеры

# Sample configuration file for VMware Guest dynamic inventory
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    with_tags: true

# Sample configuration file for VMware Guest dynamic inventory using Jinja to template the username and password.
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: '{{ (lookup("file","~/.config/vmware.yaml") | from_yaml).username }}'
    password: '{{ (lookup("file","~/.config/vmware.yaml") | from_yaml).password }}'
    validate_certs: false
    with_tags: true

# Gather minimum set of properties for VMware guest
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    properties:
    - 'name'
    - 'guest.ipAddress'
    - 'config.name'
    - 'config.uuid'

# Gather subproperties such as the parent (mostly cluster) of an ESXi
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    properties:
    - 'name'
    - 'guest.ipAddress'
    - 'config.name'
    - 'config.uuid'
    subproperties:
    - property: 'summary.runtime.host'
      subelements:
      - 'name'
      - 'parent.name'

# Create Groups based upon VMware Tools status
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    properties:
    - 'name'
    - 'config.name'
    - 'guest.toolsStatus'
    - 'guest.toolsRunningStatus'
    hostnames:
    - config.name
    keyed_groups:
    - key: guest.toolsStatus
      separator: ''
    - key: guest.toolsRunningStatus
      separator: ''

# Filter VMs based upon condition
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    properties:
    - 'runtime.powerState'
    - 'config.name'
    filters:
    - runtime.powerState == "poweredOn"
    hostnames:
    - config.name

# Filter VM's based on OR conditions
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    properties:
    - 'name'
    - 'config.name'
    - 'guest.ipAddress'
    - 'guest.toolsStatus'
    - 'guest.toolsRunningStatus'
    - 'config.guestFullName'
    - 'config.guestId'
    hostnames:
    - 'config.name'
    filters:
    - config.guestId == "rhel7_64Guest" or config.name == "rhel_20_04_empty"

# Filter VM's based on regex conditions
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    properties:
    - 'config.name'
    - 'config.guestId'
    - 'guest.ipAddress'
    - 'summary.runtime.powerState'
    filters:
    - guest.ipAddress is defined and (guest.ipAddress is match('192.168.*') or guest.ipAddress is match('192.169.*'))

# Using compose and groups
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    properties:
    - 'name'
    - 'config.name'
    - 'guest.ipAddress'
    compose:
      # This will populate the IP address of virtual machine if available
      # and will be used while communicating to the given virtual machine
      ansible_host: 'guest.ipAddress'
      composed_var: 'config.name'
      # This will populate a host variable with a string value
      ansible_user: "'admin'"
      ansible_connection: "'ssh'"
    groups:
      VMs: true
    hostnames:
    - config.name

# Use Datacenter, Cluster and Folder value to list VMs
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.200.241
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    with_tags: true
    resources:
      - datacenter:
        - Asia-Datacenter1
        - Asia-Datacenter2
        resources:
        - compute_resource:
          - Asia-Cluster1
          resources:
          - host_system:
            - Asia-ESXI4
        - folder:
          - dev
          - prod

# Use Category and it's relation with Tag
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.201.128
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    hostnames:
    - 'config.name'
    properties:
    - 'config.name'
    - 'config.guestId'
    - 'guest.ipAddress'
    - 'summary.runtime.powerState'
    with_tags: true
    keyed_groups:
    - key: tag_category.OS
      prefix: "vmware_tag_os_category_"
      separator: ""
    with_nested_properties: true
    filters:
    - "tag_category.OS is defined and 'Linux' in tag_category.OS"

# customizing hostnames based on VM's FQDN. The second hostnames template acts as a fallback mechanism.
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    hostnames:
     - 'config.name+"."+guest.ipStack.0.dnsConfig.domainName'
     - 'config.name'
    properties:
      - 'config.name'
      - 'config.guestId'
      - 'guest.hostName'
      - 'guest.ipAddress'
      - 'guest.guestFamily'
      - 'guest.ipStack'

# Select a specific IP address for use by ansible when multiple NICs are present on the VM
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.223.31
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    compose:
      # Set the IP address used by ansible to one that starts by 10.42. or 10.43.
      ansible_host: >-
        guest.net
        | selectattr('ipAddress')
        | map(attribute='ipAddress')
        | flatten
        | select('match', '^10.42.*|^10.43.*')
        | list
        | first
    properties:
      - guest.net

# Group hosts using Jinja2 conditionals
    plugin: community.vmware.vmware_vm_inventory
    strict: false
    hostname: 10.65.13.37
    username: administrator@vsphere.local
    password: Esxi@123$%
    validate_certs: false
    hostnames:
    - config.name
    properties:
    - 'name'
    - 'config.name'
    - 'config.datastoreUrl'
    groups:
      slow_storage: "'Nas01' in config.datastoreUrl[0].name"
      fast_storage: "'SSD' in config.datastoreUrl[0].name"

Авторы

  • Abhijeet Kasurde (@Akasurde)

Подсказка

Записи конфигурации для каждого типа записи имеют порядок приоритета от низкого к высокому. Например, переменная, которая расположена ниже в списке, переопределит переменную, которая расположена выше.

Ссылки на сборку

  • Система отслеживания ошибок
  • Главная страница
  • Репозиторий (источники)

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_vm_inventory_inventory.html

Spec-Zone.ru

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