Spec-Zone.ru › Ansible 2.7

Переименование существующей виртуальной машины

  • Введение
  • Требования к сценарию
  • Ограничения
  • Описание примера
    • Что ожидать
    • Отладка

Введение

Это руководство покажет, как использовать Ansible для переименования существующей виртуальной машины.

Требования к сценарию

  • Программное обеспечение

    • Должен быть установлен 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.

Описание примера

С помощью следующего Ansible-плейбука вы можете переименовать существующую виртуальную машину, изменив UUID.

---
- name: Rename virtual machine from old name to new name using UUID
  gather_facts: no
  vars_files:
    - vcenter_vars.yml
  vars:
    ansible_python_interpreter: "/usr/bin/env python3"
  hosts: localhost
  tasks:
    - set_fact:
        vm_name: "old_vm_name"
        new_vm_name: "new_vm_name"
        datacenter: "DC1"
        cluster_name: "DC1_C1"

    - name: Get VM "{{ vm_name }}" uuid
      vmware_guest_facts:
        hostname: "{{ vcenter_server }}"
        username: "{{ vcenter_user }}"
        password: "{{ vcenter_pass }}"
        validate_certs: False
        datacenter: "{{ datacenter }}"
        folder: "/{{datacenter}}/vm"
        name: "{{ vm_name }}"
      register: vm_facts

    - name: Rename "{{ vm_name }}" to "{{ new_vm_name }}"
      vmware_guest:
        hostname: "{{ vcenter_server }}"
        username: "{{ vcenter_user }}"
        password: "{{ vcenter_pass }}"
        validate_certs: False
        cluster: "{{ cluster_name }}"
        uuid: "{{ vm_facts.instance.hw_product_uuid }}"
        name: "{{ new_vm_name }}"

Поскольку Ansible использует API VMware для выполнения действий, в этом случае он будет подключаться напрямую к API с localhost.

Это означает, что плейбуки не будут выполняться с сервера vCenter или ESXi.

Обратите внимание, что этот плейбук отключает параметр gather_facts, так как вам не нужно собирать факты о localhost.

Вы можете запустить эти модули на другом сервере, который затем подключится к API, если у localhost нет доступа к vCenter. В этом случае необходимые модули Python необходимо установить на этот целевой сервер. Рекомендуется установить последнюю версию с помощью pip: pip install Pyvmomi (так как пакеты ОС обычно устаревают и несовместимы).

Прежде чем начать, убедитесь, что у вас есть:

  • Имя хоста сервера ESXi или сервера vCenter
  • Имя пользователя и пароль для сервера ESXi или vCenter
  • UUID существующей виртуальной машины, которую вы хотите переименовать

На данный момент вы будете вводить эти данные напрямую, но в более продвинутом плейбуке это можно абстрагировать и хранить более безопасным способом, используя ansible-vault или учетные данные Ansible Tower.

Если ваш сервер vCenter или ESXi не настроен с надлежащими сертификатами CA, которые могут быть проверены с сервера Ansible, необходимо отключить проверку этих сертификатов, используя параметр validate_certs. Для этого необходимо установить validate_certs=False в вашем плейбуке.

Теперь вам нужно предоставить информацию о существующей виртуальной машине, которая будет переименована. Для переименования виртуальной машины модуль vmware_guest использует VMware UUID, который уникален в среде vCenter. Это значение генерируется автоматически и не может быть изменено. Вы будете использовать модуль vmware_guest_facts для поиска виртуальной машины и получения информации о VMware UUID виртуальной машины.

Это значение будет использоваться в качестве входных данных для модуля vmware_guest. Укажите новое имя виртуальной машины, соответствующее всем требованиям VMware к соглашениям об именовании, как параметр name. Также предоставьте uuid в качестве значения VMware UUID.

Что ожидать

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

{
    "changed": true,
    "instance": {
        "annotation": "",
        "current_snapshot": null,
        "customvalues": {},
        "guest_consolidation_needed": false,
        "guest_question": null,
        "guest_tools_status": "guestToolsNotRunning",
        "guest_tools_version": "10247",
        "hw_cores_per_socket": 1,
        "hw_datastores": ["ds_204_2"],
        "hw_esxi_host": "10.x.x.x",
        "hw_eth0": {
            "addresstype": "assigned",
            "ipaddresses": [],
            "label": "Network adapter 1",
            "macaddress": "00:50:56:8c:b8:42",
            "macaddress_dash": "00-50-56-8c-b8-42",
            "portgroup_key": "dvportgroup-31",
            "portgroup_portkey": "15",
            "summary": "DVSwitch: 50 0c 3a 69 df 78 2c 7b-6e 08 0a 89 e3 a6 31 17"
        },
        "hw_files": ["[ds_204_2] old_vm_name/old_vm_name.vmx", "[ds_204_2] old_vm_name/old_vm_name.nvram", "[ds_204_2] old_vm_name/old_vm_name.vmsd", "[ds_204_2] old_vm_name/vmware.log", "[ds_204_2] old_vm_name/old_vm_name.vmdk"],
        "hw_folder": "/DC1/vm",
        "hw_guest_full_name": null,
        "hw_guest_ha_state": null,
        "hw_guest_id": null,
        "hw_interfaces": ["eth0"],
        "hw_is_template": false,
        "hw_memtotal_mb": 1024,
        "hw_name": "new_vm_name",
        "hw_power_status": "poweredOff",
        "hw_processor_count": 1,
        "hw_product_uuid": "420cbebb-835b-980b-7050-8aea9b7b0a6d",
        "hw_version": "vmx-13",
        "instance_uuid": "500c60a6-b7b4-8ae5-970f-054905246a6f",
        "ipv4": null,
        "ipv6": null,
        "module_hw": true,
        "snapshots": []
    }
}

подтверждающее, что вы переименовали виртуальную машину.

Отладка

Если ваш плейбук завершится неудачно:

  • Проверьте, правильные ли значения, предоставленные для имени пользователя и пароля.
  • Проверьте, доступен ли предоставленный вами центр обработки данных.
  • Убедитесь, что указанная виртуальная машина существует, и у вас есть разрешения на доступ к хранилищу данных.
  • Убедитесь, что указанный вами полный путь к папке уже существует.

© 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_rename_vm.html

Spec-Zone.ru

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