vmware_ubuntu_cloud_image

vmware_ubuntu_cloud_image

Роль Ansible для создания виртуальных машин на основе Ubuntu Cloud Images в среде vSphere.

Ubuntu Cloud Images

Ubuntu предлагает заранее установленные образы для использования в облаках. Один из доступных форматов образов — это Open Virtualization Appliance (OVA), который может быть импортирован в VMware. Образы используют механизм cloud-init для базовой настройки. К сожалению, нет поддержки статических IP-адресов и изменения аппаратного обеспечения во время создания машины.

Эта роль добавляет поддержку этих функций.

Возможности

  • Создает виртуальную машину (VM) из заранее загруженного файла OVA.
  • Устанавливает имя хоста.
  • Добавляет один или несколько публичных ключей SSH и/или пароль для пользователя "ubuntu", чтобы Ansible мог подключиться к новой машине.
  • По желанию настраивает аппаратное обеспечение, например, количество процессоров или памяти. См. vmware_guest для возможных настроек.
  • По желанию устанавливает заметки к VM (аннотации), параметры конфигурационного файла VM и/или пользовательские атрибуты VM.
  • Размер диска может быть увеличен (по умолчанию 10 ГБ), могут быть созданы и добавлены дополнительные диски.
  • По желанию изменяет динамический IP-адрес на статический (из Playbook или DNS).
  • VM включается и может быть использована в том же Playbook, который вызвал эту роль.
  • Можно создать несколько VM параллельно.
  • Тестировались с образами Ubuntu Cloud 21.04, 20.10, 20.04, 19.10, 19.04, 18.10, 18.04 и 17.10. Более старые версии не работают, так как они не используют netplan для настройки сети.

Требования

Чтобы использовать эту роль, вам необходимо:

  • среда vSphere, где будет развернута VM.
  • Учетные данные для сервера vCenter этой среды с соответствующими правами, см. ниже.
  • Файл OVA, например, ubuntu-18.04-server-cloudimg-amd64.ova на управляющей машине.

Если вы хотите получить IP-адреса VM из DNS, вам также необходимо:

  • установить dnspython (библиотека python, http://www.dnspython.org/) на управляющей машине.
  • использовать полностью квалифицированные доменные имена (FQDN, например, host.example.org) в инвентаре. FQDN также будет использоваться в качестве имени VM.
  • добавить A-записи для каждой VM, которую вы хотите создать.

Минимальная версия Ansible — 2.10.7. Минимальная версия коллекции community.vmware — 1.8.0, которая является частью пакета сообщества Ansible 3.2.0.

Права vSphere

Минимальные права для создания VM с помощью этой роли:

DataStore > Allocate Space
Network > Assign Network
Resource > Assign Virtual Machine to Resource Pool
vApp > Import
Virtual Machine > Interaction > Power On
Virtual Machine > Configuration > Add New Disk

Чтобы изменить настройки процессора и памяти, вам нужны права:

Virtual Machine > Configuration > Change CPU count
Virtual Machine > Configuration > Memory

Чтобы изменить размер диска, вам нужны права:

Virtual Machine > Configuration > Extend virtual disk

Для дополнительных настроек может потребоваться дополнительные права.

Переменные роли

Подключение к vCenter

  • URL сервера vCenter задается с помощью vcenter_hostname или переменной среды VMWARE_HOST.
  • Пользователь vCenter задается с помощью vcenter_username или переменной среды VMWARE_USER.
  • Пароль vCenter задается с помощью vcenter_password или переменной среды VMWARE_PASSWORD.
  • Проверка сертификатов может быть отключена, установив vcenter_validate_certs=no или установив переменную среды VMWARE_VALIDATE_CERTS в no.

Настройки VMware

  • Файл OVA на управляющей машине указывается с помощью ova_file.
  • VM создается в дата-центре vmware_datacenter на хранилище данных vmware_datastore.
  • VM может быть помещена в папку, указав vmware_folder, и в ресурсный пул, указав vmware_resource_pool.
  • Имя VM по умолчанию — inventory_hostname. Его можно изменить с помощью vm_guestname.

Настройки VM

  • Имя хоста машины по умолчанию — inventory_hostname_short. Его можно изменить с помощью vm_hostname.
  • Используйте ssh_keys, чтобы установить список публичных ключей, которые будут добавлены в файл authorized_keys пользователя "ubuntu". Должен быть указан хотя бы один из параметров ssh_keys и password, чтобы Ansible мог подключиться к новой машине.
  • Используйте password, чтобы установить пароль для пользователя "ubuntu". Должен быть указан хотя бы один из параметров ssh_keys и password, чтобы Ansible мог подключиться к новой машине.
  • Аппаратное обеспечение можно задать с помощью hardware, содержащего словарь, как указано в vmware_guest.
  • Размер диска может быть изменен с помощью disk. Этот параметр принимает список спецификаций диска, как задокументировано в vmware_guest_disk. Первый диск соответствует импортированному виртуальному диску. Его размер может быть только увеличен. См. пример playbook ниже для использования.
  • Пользовательские привязки сети могут быть указаны с помощью networks, см. vmware_deploy_ovf для семантики.
  • Заметки к VM могут быть установлены с помощью annotation.
    Для использования этой функции требуются разрешения VMware Virtual Machine > Configuration > Set annotation.
  • Чтобы установить параметры конфигурационного файла VM, передайте advanced_settings со списком словарей, как показано в примере playbook.
  • Чтобы установить пользовательские атрибуты VM, передайте customvalues со списком словарей, как показано в примере playbook. Обратите внимание, что новые пользовательские значения не будут созданы, они должны существовать в vCenter до развертывания.

Чтобы использовать статический IP-адрес, используйте следующие ключи в словаре static_ip:

  • ipv4 - конкретный IPv4-адрес, который вы хотите назначить. По умолчанию используется IPv4-адрес, найденный в DNS для FQDN.
  • netmask - маска подсети в нотации CIDR, по умолчанию 8.
  • gateway - основной шлюз (обязательный)
  • dns_servers - список IP-адресов DNS серверов, по умолчанию используются публичные DNS-серверы Google.
  • dns_search - список доменных имен, которые следует использовать в качестве суффиксов поиска DNS. Используйте это, чтобы поместить вашу VM в домен.

Настройки инвентаря

Поскольку VMs еще не существуют, ключ сервера SSH неизвестен. Чтобы подключиться к новым VMs, вам нужно отключить проверку ключа хоста SSH. Если вы планируете часто воссоздавать VMs с теми же FQDN, SSH не должен сохранять отпечатки в файле known_hosts.

Поэтому рекомендуемые переменные для хоста/группы:

ansible_user=ubuntu
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

Зависимости

Эта роль не зависит от других ролей.

Пример Playbook

playbook:

- name: Развертывание виртуальной машины на основе образа Ubuntu Cloud
  hosts: cloudimg
  gather_facts: no

  roles:
    - role: hamburger_software.vmware_ubuntu_cloud_image
      vars:
        vcenter_hostname: vcenter.your.domain
        vcenter_username: [email protected]
        vcenter_password: verysecret
        vcenter_validate_certs: no
        vmware_datacenter: your-datacenter
        vmware_datastore: your-datastore
        vmware_folder: your-datacenter/vm/some-folder
        ova_file: ubuntu-20.04-server-cloudimg-amd64.ova
        hardware:
          num_cpus: 4
          memory_mb: 2048
        annotation: 'пример VM на основе Ubuntu Cloud Image'
        # это предотвращает избыточные сообщения syslog от multipathd на Ubuntu 20.04
        advanced_settings:
          - key: disk.EnableUUID
            value: 'TRUE'
        customvalues:
          - key: 'yourkey'
            value: 'yourvalue'
        disk:
          - size_gb: 20
            datastore: your-datastore
            scsi_controller: 0
            unit_number: 0
          - size_mb: 250
            datastore: your-datastore
            scsi_controller: 0
            unit_number: 1
            type: thin
        static_ip:
          netmask: 16
          gateway: 10.0.42.1
          dns_servers: [10.0.47.11, 10.0.48.12]
          dns_search:
          - your.domain
        ssh_keys:
          - ssh-rsa AAAAB3Nz[...]== some-key-name
        password: passw0rd

инвентарь с 5 хостами:

[cloudimg]
vm-[1:5].your.domain

[cloudimg:vars]
ansible_user=ubuntu
ansible_password=passw0rd
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

Лицензия

MIT

Информация об авторе

Эта роль была создана Харальдом Алберсом в HS - Hamburger Software GmbH & Co. KG.

О проекте

Creates virtual machines based on Ubuntu Cloud Images in a vSphere environment.

Установить
ansible-galaxy install hamburger-software/ansible-role-vmware_ubuntu_cloud_image
Лицензия
mit
Загрузки
701
Владелец
Product documentation and open source projects created at HS - Hamburger Software GmbH & Co. KG