Найти в Дзене

Terraform для VMware vSphere с VScode

Terraform — программное обеспечение с открытым исходным кодом, используемое для конфигурирования вычислительных ресурсов по модели «инфраструктура как код» (IaC). Для создания сервера мы будем использовать ОС "Debian 12". Все команды будут вводиться через ssh под пользователем root. Напомню, что компания HashiCorp заблокировала свой ресурс для России, поэтому идем на их сайт известным способом и скачиваем от туда нужный нам дистрибутив программы. Разархивируем файл и перенесем его на наш сервер с помощью WinSCP. Далее помещаем скаченный файл в /usr/local/bin/ mv terraform /usr/local/bin/ Даем необходимые разрешения chmod +x /usr/local/bin/terraform Проверяем, что система видит программу terraform --version Переходим в GitHub и смотрим ссылку на актуальную версию https://github.com/coder/code-server/releases Меняем в нижеприведенной ссылке версию и устанавливаем wget -q https://github.com/coder/code-server/releases/download/v4.108.0/code-server_4.108.0_amd64.deb dpkg -i code-server_4.1
Оглавление

Terraform — программное обеспечение с открытым исходным кодом, используемое для конфигурирования вычислительных ресурсов по модели «инфраструктура как код» (IaC).

Для создания сервера мы будем использовать ОС "Debian 12". Все команды будут вводиться через ssh под пользователем root.

Установка Terraform

Напомню, что компания HashiCorp заблокировала свой ресурс для России, поэтому идем на их сайт известным способом и скачиваем от туда нужный нам дистрибутив программы.

Install | Terraform | HashiCorp Developer
-2

Разархивируем файл и перенесем его на наш сервер с помощью WinSCP.

Далее помещаем скаченный файл в /usr/local/bin/

mv terraform /usr/local/bin/

Даем необходимые разрешения

chmod +x /usr/local/bin/terraform

Проверяем, что система видит программу

terraform --version
-3

Установка веб интерфейса командной строки

Переходим в GitHub и смотрим ссылку на актуальную версию

https://github.com/coder/code-server/releases

-4

Меняем в нижеприведенной ссылке версию и устанавливаем

wget -q https://github.com/coder/code-server/releases/download/v4.108.0/code-server_4.108.0_amd64.deb
dpkg -i code-server_4.108.0_amd64.deb
-5

Запускаем службу

systemctl --user start code-server
systemctl --user enable code-server
-6

Проверяем, что служба работает

ss -plnt
systemctl --user status code-server

-7

Следующая команда покажет наш пароль для аутентификации

cat ~/.config/code-server/config.yaml
-8

Устанавливаем nginx

apt install nginx -y
cd /etc/nginx/sites-available/

Создаем файл

nano code-server

server {

listen 80;

listen [::]:80;

server_name <адрес>;

location / {

proxy_pass http://localhost:8080/;

proxy_set_header Host $http_host;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection upgrade;

proxy_set_header Accept-Encoding gzip;

}

}

-9

Активируем сервер

ln -s /etc/nginx/sites-available/code-server /etc/nginx/sites-enabled/
nginx -t
-10
systemctl restart nginx
systemctl enable nginx

Переходим в браузер и проверяем

-11
-12

Установка модуля для VMware vSphere

Для обхода основного провайдера необходимо создать в директории root файл .terraformrc

nano .terraformrc

provider_installation {

network_mirror {

url = "https://tfmirror.dev/"

}

}

Создаем файл для запроса и добавляем туда путь к модулю

module "vm" {

source = "tfmirror.dev/Terraform-VMWare-Modules/vm/vsphere"

version = "3.8.0"

# insert the 2 required variables here

}

Командой terraform init скачиваем наш модуль

-13

Проверка

Для проверки создаем тестовый файл test.tf с помощью которого мы развернем пустую ВМ

provider "vsphere" {

vsphere_server = <адрес вцентра>

user           = <пользователь>

password       = <пароль>

allow_unverified_ssl  = true

}

# A "data" resource is a readonly resource, something Terraform knows about but won't be changing.

data "vsphere_datacenter" "datacenter" {

name = "датацентр"

}

data "vsphere_datastore" "datastore" {

name          = "хранилище"

datacenter_id = data.vsphere_datacenter.datacenter.id

}

data "vsphere_compute_cluster" "cluster" {

name          = "кластер"

datacenter_id = data.vsphere_datacenter.datacenter.id

}

data "vsphere_network" "network" {

name          = "портгруппа"

datacenter_id = data.vsphere_datacenter.datacenter.id

}

resource "vsphere_virtual_machine" "vm" {

name             = "имяВМ"

resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id

datastore_id     = data.vsphere_datastore.datastore.id

num_cpus = 2

memory   = 4096

guest_id = "ubuntu64Guest"

wait_for_guest_net_timeout = 0

network_interface {

network_id   = data.vsphere_network.network.id

adapter_type = "vmxnet3"

}

disk {

label            = "disk0"

size             = 20

eagerly_scrub    = false

thin_provisioned = true

}

}

Планируем наш конфиг и применяем

terraform plan
terraform apply

По итогу мы должны увидеть

-14

А в вцентре должна появиться наша ВМ.