Недавно на своей страничке в 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
0 коммент.:
Отправить комментарий