Поиск пути к папке существующей виртуальной машины VMware
Введение
Это руководство покажет вам, как использовать Ansible для поиска пути к папке существующей виртуальной машины VMware.
Требования к сценарию
-
Программное обеспечение
- Должен быть установлен Ansible версии 2.5 или выше.
- Модуль Python
Pyvmomiдолжен быть установлен на контрольном узле Ansible (или целевом узле, если выполнение не происходит на локальном хосте). - Рекомендуется установить последнюю версию с помощью pip:
pip install Pyvmomi(так как пакеты ОС обычно устарели и несовместимы).
-
Аппаратное обеспечение
- По меньшей мере один автономный сервер ESXi или
- сервер vCenter с по меньшей мере одним сервером ESXi
-
Доступ/Учетные данные
- Ansible (или целевой сервер) должен иметь сетевой доступ к серверу vCenter или серверу ESXi
- Имя пользователя и пароль для сервера vCenter или ESXi
Ограничения
- Все имена переменных и имена объектов VMware чувствительны к регистру.
- Для использования опции
validate_certsнеобходимо использовать Python версии 2.7.9, так как эта версия способна изменять поведение проверки SSL.
Описание примера
С помощью следующего Ansible-плейбука вы можете найти путь к папке существующей виртуальной машины по её имени.
---
- name: Find folder path of an existing virtual machine
hosts: localhost
gather_facts: False
vars_files:
- vcenter_vars.yml
vars:
ansible_python_interpreter: "/usr/bin/env python3"
tasks:
- set_fact:
vm_name: "DC0_H0_VM0"
- name: "Find folder for VM - {{ vm_name }}"
vmware_guest_find:
hostname: "{{ vcenter_server }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_pass }}"
validate_certs: False
name: "{{ vm_name }}"
delegate_to: localhost
register: vm_facts
Так как Ansible использует VMware API для выполнения действий, в данном случае он будет подключаться непосредственно к API с локального хоста.
Это означает, что плейбуки не будут выполняться с сервера vCenter или ESXi.
Обратите внимание, что этот плейбук отключает параметр gather_facts, так как вы не хотите собирать факты о локальном хосте.
Вы можете запустить эти модули на другом сервере, который затем подключится к API, если у локального хоста нет доступа к vCenter. В этом случае необходимые модули Python необходимо установить на этот целевой сервер. Рекомендуется установить последнюю версию с помощью pip: pip install Pyvmomi (так как пакеты ОС обычно устарели и несовместимы).
Перед началом убедитесь, что у вас есть:
- Имя хоста сервера ESXi или сервера vCenter
- Имя пользователя и пароль для сервера ESXi или vCenter
- Имя существующей виртуальной машины, для которой требуется получить путь к папке
Сейчас вы будете вводить эти данные напрямую, но в более продвинутом плейбуке это можно абстрагировать и хранить более безопасным способом, используя ansible-vault или используя учетные данные Ansible Tower.
Если ваш сервер vCenter или ESXi не настроен с надлежащими сертификатами CA, которые могут быть проверены с сервера Ansible, необходимо отключить проверку этих сертификатов, используя параметр validate_certs. Для этого необходимо установить validate_certs=False в вашем плейбуке.
Имя существующей виртуальной машины будет использоваться как вход для модуля vmware_guest_find через параметр name.
Ожидаемый результат
Выполнение этого плейбука может занять некоторое время, в зависимости от вашей среды и сетевого подключения. По завершении выполнения вы увидите
"vm_facts": {
"changed": false,
"failed": false,
...
"folders": [
"/F0/DC0/vm/F0"
]
}
Устранение неполадок
Если ваш плейбук завершится ошибкой:
- Проверьте, правильные ли значения имени пользователя и пароля.
- Проверьте, доступен ли указанный вами дата-центр.
- Проверьте, существует ли указанная виртуальная машина и есть ли у вас соответствующие разрешения для доступа к объекту VMware.
- Убедитесь, что указанный полный путь к папке уже существует.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/vmware/scenario_find_vm_folder.html