Управление vCloud Director из командной строки vCD-CLI

vCD-CLI — это инструмент от VMware для управления инфраструктурой из командной строки. Основное преимущество заключается в том, что он позволяет автоматизировать процесс управления инфраструктурой. С его помощью можно управлять виртуальными машинами, сетями, хранилищами данных и так далее. Это делает его очень полезным инструментом для DevOps-инженеров и системных администраторов.

В этой статье мы рассмотрим процесс установки и использования vCD-CLI на примере нашей виртуальной инфраструктуры mClouds, создадим инфраструктуру с тремя виртуальными машинами: Active Directory, сервер 1С и Ubuntu для личного пользования.

Установка

  1. Сначала установите Python.
  2. Скачайте vCD-CLI с помощью pip3 и добавьте в PATH путь к вашему pip.exe.
Windows:
pip3 install --user vcd-cli

set PATH=%PATH%;C:\Users\Administrator\AppData\Roaming\Python\Python36\Scripts
Mac OS X:
xcode-select --install

sudo easy_install pip

pip3 install --user vcd-cli

export PATH=/Library/Frameworks/Python.framework/Versions/3.6/bin:$PATH

pip3 install --user pbr

pip3 install --user urllib3 pyopenssl
Ubuntu:
sudo apt-get install python3-pip gcc -y

pip3 install --user vcd-cli

Инструкция по установке от VMware находится здесь

Использование

Писать код и исполнять его мы будем на примере нашего облака на VMware vCloud Director. У нас пользователи получают учётную запись правами Organization Administrator, если вы используете учетную запись с теми же правами в другом облаке VMware, то сможете воспроизвести код из наших примеров. Приступаем!

Для работы с инфраструктурой vCloud Director понадобятся следующие данные: host, организация, дата-центр, название edge-gateway, пользователь, его пароль и версия API.

Список основных команд vCD-CLI:

Можно ознакомиться с полным описанием команд vCD-CLI на официальном сайте.

Также, выполнив любую команду с параметром “-h” , на экране появятся доступные опции и пояснения к ним. Например, выполнение этой команды:

vcd gateway services -h

даст такой вывод:

Давайте спроектируем инфраструктуру с тремя виртуальными машинами (AD, 1C и Ubuntu), сетью LAN01 и настроенными правилами файервола:

  1. Начнем с подключения к Org Vdc:
vcd login vcloud.vmware.com org admin --password PXXXXXXXXX --version 38.0 --vdc org-vdc

2. Создадим vApp под названием vapp01:

vcd vapp create vapp01

3. Создадим сеть "LAN01" (192.168.100.1/24) и настроим DNS:

vcd network routed create -g vdc-EDGE --subnet 192.168.100.1/24 --dns1 1.1.1.1 --dns2 8.8.8.8 LAN01

4. Подключим сеть LAN01 к vapp01:

vcd vapp connect vapp01 LAN01

5. В vapp01 создадим 3 виртуальные машины на Windows Server 2022 (AD), Debian12 (1C) и Ubuntu22 (личный):

vcd vapp create -c Templates -t WS2022 -m 8192 -u 1 -k 32768 -v AD vapp01

vcd vapp create -c Templates -t Debian12 -m 8192 -u 1 -k 32768 -v 1C vapp01

vcd vapp create -c Templates -t Ubuntu22 -m 8192 -u 1 -k 32768 -v Ubuntu vapp01

6. Подключим машины к LAN01 с адаптером VMXNET3 и установим статические IP-адреса:

vcd vm add-nic --adapter-type VMXNET3 --connect --network LAN01 --ip-address-mode MANUAL --ip-address 192.168.100.101 vapp01 AD

vcd vm add-nic --adapter-type VMXNET3 --connect --network LAN01 --ip-address-mode MANUAL --ip-address 192.168.100.102 vapp01 1C

vcd vm add-nic --adapter-type VMXNET3 --connect --network LAN01 --ip-address-mode MANUAL --ip-address 192.168.100.103 vapp01 Ubuntu

7. Установим правило SNAT для доступа в сеть Интернет из облачной локальной сети:

vcd gateway services nat create-snat --action snat -o 192.168.100.0/24 -t 77.202.130.56 vdc-EDGE --enabled --desc "SNAT for LAN01" --logging-disable

8. Добавим правила DNAT для доступа к машинам из внешней сети:

vcd gateway services nat create-dnat EDGE --action dnat -o 77.202.130.56 -t 192.168.100.101 --enabled --desc "DNAT for AD" --vnic 0 --original-Port 31001 --translated-Port 3389 --protocol tcp --logging-disable

vcd gateway services nat create-dnat EDGE --action dnat -o 77.202.130.56 -t 192.168.100.102 --enabled --desc "DNAT for 1C" --vnic 0 --original-Port 31002 --translated-Port 22 --protocol tcp --logging-disable

vcd gateway services nat create-dnat EDGE --action dnat -o 77.202.130.56 -t 192.168.100.103 --enabled --desc "DNAT for Ubuntu" --vnic 0 --original-Port 31003 --translated-Port 22 --protocol tcp --logging-disable
 
Установим правила Firewall:
vcd gateway services firewall create --name Access --action accept --enabled vdc-EDGE

В vCD-CLI вы можете удалить переменные source, destination и service правила FW, но добавить новые значения вместо стандартных (any, any, any) получится только из vCloud Director.

Готово!

Мы создали 3 ВМ, подключили их к сети и настроили правила FW и NAT. Делая тоже самое внутри vCD, мы бы потратили намного больше времени. Работая из командной строки, vCD-CLI дает отличную возможность для автоматизации процессов внутри vCloud Director.

vCD-CLI  или  Terraform?

Terraform — это инструмент для управления инфраструктурой от компании Hashicorp. Для управления инфраструктурой Terraform использует конфигурационные файлы в формате HashiCorp Configuration Language (HCL). В файлах HCL пользователь описывает то, какую инфраструктуру он хочет создать и какие ресурсы в ней должны быть. 

Когда пользователь запускает Terraform, программа считывает конфигурационные файлы и создает ресурсы, описанные в них. Она также учитывает зависимости между ресурсами и создает ресурсы в нужном порядке. Если пользователь изменяет конфигурацию Terraform, например, добавляет новый ресурс или изменяет существующий, программа понимает, какие изменения нужно внести в инфраструктуру, чтобы ее состояние соответствовало описанному в конфигурационных файлах.

Так же как и vCD-CLI, Terraform позволяет автоматизировать процесс создания и управления инфраструктурой.

Различия vCD-CLI и Terraform:

1) Terraform позволяет указывать зависимости между ресурсами, что помогает управлять порядком их создания и удаления. В vCD-CLI это не требуется, т.к. команды исполняются в той последовательности, в которой вы их вводите.

2) Terraform позволяет описывать большинство популярных облачных платформ (Google Cloud, Oracle Cloud и т.д.). vCD-CLI подходит лишь для управления инфраструктуры на базе VMware vCloud Director.

3) Ввод команд через cmd намного быстрее и проще, чем построение кода с указанием зависимостей и переменных. Из-за структуры Terraform разные конфигурации могут сильно отличаться. Где-то все переменные занесены в отдельный файл, где-то они вручную заносятся в главный main.tf, а где-то части кода разделены на несколько файлов. Это сильно усложняет читаемость и изменение конфигурации.

4) В Terraform используется синтаксис языка HCL, его придется изучить. Команды в vCD-CLI - интуитивно понятны, есть официальная инструкция с подробным описанием всех опций.

5) Писать код для Terraform намного дольше, чем vCD-CLI. К примеру, в этой статье нам потребовалось всего 8 команд для создания VM, vApp, Network, правил NAT и подключения VM к сети.

Что выбрать?

Оба инструмента значительно упрощают работу с vCloud Director. Но нам в первую очередь важна возможность быстро и просто создавать и изменять виртуальные инфраструктуры, поэтому предпочитаем и советуем вам использовать vCD-CLI, как наиболее удобный продукт.

 

Наш телеграм-канал
Пишем про облака, кейсы, вебинары
Подписаться