понедельник, 27 мая 2024 г.

Плейбук Ansible для массового создания ВМ в vSphere

Недавно на своей страничке в GitHub я опубликовал плейбук Ansible для автоматического создания виртуальных машин в vSphere. Плейбук получает входные параметры из CSV файла и с помощью модуля vmware_guest создает и настраивает ВМ.


Установка и использование

Чтобы запустить этот плейбук, необходимо сначала установить Ansible и дополнительные модули. Например, для Ubuntu 22.04 выполните:

sudo apt-add-repository ppa:ansible/ansible

sudo apt update

sudo apt install ansible python3-pip -y

pip install pyvmomi

pip install netaddr

Загрузите файлы проекта с GitHub:

git clone https://github.com/omnimod/Ansible-vSphere-Bulk-Import.git

Скопируйте файл vars-deploy-vms.yaml.example в vars-deploy-vms.yaml и отредактируйте его, чтобы изменить значения по умолчанию в соответствии с вашей инфраструктурой. Дополнительную информацию о значениях по умолчанию смотрите в разделе "Значения по умолчанию":

cp vars-deploy-vms.yaml.example vars-deploy-vms.yaml

Скопируйте файл vms.csv.example в файл vms.csv и отредактируйте его, указав параметры виртуальных машин. Для получения дополнительной информации о файле .csv смотрите раздел CSV файл:

cp vms.csv.example vms.csv

Для создания ВМ запустите плейбук:

ansible-playbook deploy-vsphere-vms.yaml


Значения по умолчанию

vars-deploy-vms.yaml содержит предопределенные переменные и значения по умолчанию, которые можно использовать для создания новых виртуальных машин. Если не указать параметры в файле CSV, при создании виртуальных машин будут использоваться значения по умолчанию из vars-deploy-vms.yaml или шаблона виртуальной машины. Список допустимых предопределенных переменных и значений по умолчанию:

  • vsphere_url - полное доменное имя или IP-адрес сервера vCenter, к которому необходимо подключиться.
  • vsphere_login - логин для подключения к vCenter Server (administrator@vsphere.local или другая УЗ).
  • vsphere_password - пароль для подключения к vCenter Server.
  • validate_certs - установите True, если необходима проверка сертификата.
  • debug - установите True, если вы хотите получать доп. информацию во время выполнения плейбука для отладки.
  • input_file - путь к CSV-файлу.
  • def_vm_template - шаблон виртуальной машины по умолчанию для создания новых виртуальных машин (это и другие параметры def_ могут переопределяться значениями из CSV-файла для конкретной виртуальной машины).
  • def_vm_cluster - кластер vSphere, в котором вы хотите разместить новые ВМ.
  • def_vm_resource_pool - пул ресурсов vSphere, в котором вы хотите разместить новые виртуальные машины.
  • def_vm_folder - папка vSphere, в которую вы хотите поместить новые виртуальные машины.
  • def_vm_datacenter - виртуальный ЦОД vSphere, в котором вы хотите разместить новые виртуальные машины.
  • def_disk_type - тип виртуального диска: thin, thick или eagerzeroedthick.
  • def_disk_mode - режим работы виртуального диска: persistent, independent_persistent или independent_nonpersistent.
  • def_datastore - хранилище данных для размещения дисков ВМ.
  • def_network_netmask - маска подсети.
  • def_network_gateway - шлюз по умолчанию.
  • def_network_domain - имя домена.
  • def_vm_password - пароль учетной записи гостевой ОС по умолчанию (для УЗ root или administrator).
  • def_vm_state - состояние ВМ после создания: включено или выключено.
  • def_wait_for_ip_address - будет ли плейбук полной загрузки текущей виртуальной машины и получения IP-адреса перед созданием следующей.
  • def_network_dns_servers - список DNS-серверов.


CSV файл

vms.csv — это файл, который содержит входные параметры для созданных виртуальных машин. Список принимаемых параметров/столбцов:

  • name - имя ВМ. Этот параметр является обязательным.
  • cluster - кластер vSphere, в котором вы хотите разместить новые ВМ.
  • domainadmin - логин для ввода виртуальной машины в домен.
  • domainadminpassword - пароль для ввода ВМ в домен.
  • dns_servers - список DNS-серверов.
  • dns_suffix - DNS-суффикс для поиска.
  • joindomain - присоединить виртуальную машину к домену: true или false.
  • orgname - название компании.
  • password - пароль учетной записи гостевой ОС по умолчанию (root или administrator).
  • timezone - часовой пояс.
  • datacenter - центр обработки данных vSphere, в котором вы хотите разместить новые виртуальные машины.
  • folder - папка vSphere, в которую вы хотите поместить новые ВМ.
  • memory_mb - объем оперативной памяти в МБ для ВМ.
  • num_cpus - количество процессоров для ВМ.
  • num_cpu_cores_per_socket - количество ядер на сокет. Например, если вы указали num_cpus = 8 и num_cpu_cores_per_socket = 4, у виртуальной машины будет два сокета по 4 ядра в каждом.
  • secure_boot - включить безопасную загрузку: true или false.
  • resources_pool - пул ресурсов vSphere, в котором вы хотите разместить новые виртуальные машины.
  • state - состояние ВМ после создания: poweredon или poweredoff.
  • template - шаблон для создания ВМ.
  • wait_for_ip_address - будет ли плейбук ждать полной загрузки текущей виртуальной машины и получения IP-адреса перед созданием следующей.
  • disk{n}.size_gb - размер диска{n} в ГБ, где n - номер диска, например disk0.size_gb, disk1.size_gb, disk2.size_gb и т. д. Вы можете создать ВМ с несколькими виртуальными дисками. Например, при указании параметров disk0.size_gb = 40, disk1.size_gb = 20, disk2.size_gb = 1 плейбук создаст виртуальную машину с тремя дисками по 40 ГБ, 20 ГБ и 1 ГБ соответственно. Вам необходимо определить параметр disk{n}.size_gb для каждого виртуального диска в шаблоне виртуальной машины.
  • disk{n}.type - тип виртуального диска: thin, thick или eagerzeroedthick.
  • disk{n}.disk_mode - режим работы виртуального диска: persistent, independent_persistent или independent_nonpersistent.
  • disk{n}.datastore - хранилище данных для размещения диска n.
  • network{n}.name - имя группы портов для подключения виртуального сетевого адаптера, где n — номер виртуального сетевого адаптера, например network0.name, network1.name, network2.name и т. д. Вы можете создать виртуальную машину с несколькими виртуальными сетевыми адаптерами. Например, установка network0.name = "VM Network", network1.name = "VM Network 2", network2.name = "VM Network 3" создаст виртуальную машину с тремя сетевыми адаптерами и подключит их к сетям "VM Network", "VM Network 2", "VM Network 3" соответственно. Вам необходимо определить параметр network{n}.name для каждого виртуального сетевого адаптера в шаблоне виртуальной машины.
  • network{n}.ip — установить статический IP для nic n.
  • network{n}.netmask - установить сетевую маску для nic n.
  • network{n}.gateway — установить шлюз по умолчанию для nic n.
  • network{n}.dns_servers — установить DNS-серверы для nic n. Вы можете указать несколько DNS-серверов через запятую, например: "192.168.1.2, 192.168.1.3". Если вы это сделаете, не забудьте использовать двойные кавычки, чтобы экранировать символ запятой.
  • network{n}.domain - установить доменное имя для nic n.

Вы можете пропустить часть параметров в CSV-файле или полностью удалить весь столбец. В этом случае плейбук будет использовать значения по умолчанию из файла vars-deploy-vms.yaml или из шаблона ВМ.

Дополнительная информация доступна на GitHub: https://github.com/omnimod/Ansible-vSphere-Bulk-Import

Комментариев нет:

Отправить комментарий