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
.
Для использования этой функции требуются разрешения VMwareVirtual 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