Удаление существующей виртуальной машины VMware
Введение
Это руководство покажет вам, как использовать Ansible для удаления существующей виртуальной машины VMware.
Требования к сценарию
-
Программное обеспечение
- Должен быть установлен Ansible 2.5 или более поздней версии.
- Модуль Python
Pyvmomiдолжен быть установлен на контрольном узле Ansible (или целевом узле, если выполняется не на localhost). - Рекомендуется устанавливать последнюю версию с помощью pip:
pip install Pyvmomi(так как пакеты ОС обычно устаревшие и несовместимые).
-
Аппаратное обеспечение
- По крайней мере один автономный сервер ESXi или
- сервер vCenter с по крайней мере одним сервером ESXi
-
Доступ/Учетные данные
- Ansible (или целевой сервер) должен иметь сетевой доступ к серверу vCenter или серверу ESXi
- Имя пользователя и пароль для сервера vCenter или ESXi
- Узлы в кластере ESXi должны иметь доступ к хранилищу данных, на котором находится шаблон.
Ограничения
- Все имена переменных и имена объектов VMware чувствительны к регистру.
- Для использования параметра
validate_certsнеобходимо использовать версию Python 2.7.9, так как эта версия способна изменять поведение проверки SSL. -
vmware_guestмодуль пытается имитировать веб-интерфейс и рабочий процесс VMware, поэтому виртуальная машина должна быть выключена, чтобы удалить ее из инвентаризации VMware.
Предупреждение
Удаление виртуальной машины VMware с помощью модуля vmware_guest — это операция, которая не может быть отменена, поэтому настоятельно рекомендуется создать резервную копию виртуальной машины и связанных файлов (vmx и vmdk) перед продолжением.
Описание примера
В этом случае/примере пользователь будет удалять виртуальную машину по имени. Следующий Ansible-план показывает основные параметры, которые необходимы для этого.
---
- name: Remove virtual machine
gather_facts: no
vars_files:
- vcenter_vars.yml
vars:
ansible_python_interpreter: "/usr/bin/env python3"
hosts: localhost
tasks:
- set_fact:
vm_name: "VM_0003"
datacenter: "DC1"
- name: Remove "{{ vm_name }}"
vmware_guest:
hostname: "{{ vcenter_server }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_pass }}"
validate_certs: no
cluster: "DC1_C1"
name: "{{ vm_name }}"
state: absent
delegate_to: localhost
register: facts
Поскольку Ansible использует API VMware для выполнения действий, в этом случае он будет подключаться напрямую к API с localhost.
Это означает, что playbook не будет выполняться с сервера vCenter или ESXi.
Обратите внимание, что этот план отключает параметр gather_facts, так как вы не хотите собирать факты о localhost.
Вы можете запустить эти модули на другом сервере, который затем подключится к API, если у localhost нет доступа к vCenter. В таком случае необходимые модули Python необходимо установить на этот целевой сервер. Рекомендуется устанавливать последнюю версию с помощью pip: pip install Pyvmomi (поскольку пакеты ОС обычно устаревшие и несовместимые).
Перед началом убедитесь, что у вас есть:
- Имя хоста сервера ESXi или сервера vCenter
- Имя пользователя и пароль для сервера ESXi или vCenter
- Имя существующей виртуальной машины, которую вы хотите удалить
Сейчас вы будете вводить эти данные напрямую, но в более продвинутом playbook это можно абстрагировать и хранить более безопасным способом, используя ansible-vault или используя учетные данные Ansible Tower.
Если ваш сервер vCenter или ESXi не настроен с соответствующими сертификатами CA, которые можно проверить с сервера Ansible, то необходимо отключить проверку этих сертификатов, используя параметр validate_certs. Для этого нужно установить validate_certs=False в вашем playbook.
Имя существующей виртуальной машины будет использоваться в качестве входных данных для модуля vmware_guest через параметр name.
Что ожидать
- После завершения этого playbook вы не увидите никакого JSON-вывода по сравнению с другими операциями, выполняемыми с помощью модуля
vmware_guest.
{
"changed": true
}
- Состояние изменяется на
True, что сообщает об удалении виртуальной машины из инвентаризации VMware. Это может занять некоторое время в зависимости от вашей среды и сетевого подключения.
Устранение неполадок
Если ваш playbook завершился ошибкой:
- Проверьте, правильные ли значения, введенные для имени пользователя и пароля.
- Проверьте, доступен ли указанный вами центр обработки данных.
- Проверьте, существует ли указанная виртуальная машина и есть ли у вас разрешения на доступ к хранилищу данных.
- Убедитесь, что полный путь к папке, который вы указали, уже существует. Он не будет автоматически создавать для вас папки.
© 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_remove_vm.html