Сипаттама инфрақұрылымы
Сервистің жүктеу образынан ВМ жасау үшін:
-
ВМ виртуалды желісінің деректерін алыңыз.
vkcs_networking_subnetдеректер көзін пайдаланыңыз.Виртуалды желі деректерін алудың мысалыdata "vkcs_networking_subnet" subnet {# Идентификатор подсетиsubnet_id = var.ds-subnet} -
Қажет болса, қауіпсіздік тобын жасаңыз. Келесі ресурстарды пайдаланыңыз:
-
vkcs_networking_secgroup— қол жеткізу ережелері кіретін қауіпсіздік тобы. -
vkcs_networking_secgroup_rule— қауіпсіздік тобына арналған қол жеткізу ережелері.Қауіпсіздік тобын жасау мысалыresource "vkcs_networking_secgroup" "secgroup" {name = "security_group"description = "terraform security group"# Тип SDNsdn = data.vkcs_networking_subnet.subnet.sdn}resource "vkcs_networking_secgroup_rule" "rules" {# Определение направления применения правил — для входящих (ingress) или исходящих (egress) соединенийdirection = "ingress"# Диапазон портов доступаport_range_max = 22port_range_min = 22# Протокол доступаprotocol = "tcp"# Индентификатор группы безопасности, для которой создано правилоsecurity_group_id = vkcs_networking_secgroup.secgroup.iddescription = "secgroup_rule"}
SDN туралы толығырақ — Terraform ресурстарында SDN түрін пайдалану бөлімінде.
-
-
Root-диск жасаңыз.
vkcs_blockstorage_volumeресурсын пайдаланыңыз.Сервис образының идентификаторы ретінде бұрын жасалған образдың идентификаторын көрсетіңіз (толығырақ — Сервис образын жасау бөлімінде), ол бұлттық платформаның ЛК-сында көрсетіледі.
Ресурста диск метадеректерін көрсетіңіз:
metadata = { "sid" : "xaas", "product" : "<SERVICE_NAME>" }Мұндағы
<SERVICE_NAME>— сервис атауы.Root-диск жасаудың мысалыresource "vkcs_blockstorage_volume" "boot" {name = "root"# Метаданныеmetadata = { "sid" : "xaas", "product" : "test service" }# Идентификатор образа сервисаimage_id = 2a7a77db-d902-49bc-9198-531bd646d86fvolume_type = "ceph-ssd"size = 10availability_zone = "GZ1"} -
Сервис деректерін сақтау үшін бөлек том жасаңыз.
vkcs_blockstorage_volumeресурсын пайдаланыңыз. Онда диск метадеректерін root-диск үшін көрсетілгендей етіп көрсетіңіз.Бөлек диск томын жасау мысалыresource "vkcs_blockstorage_volume" "data" {name = "volume"# Метаданныеmetadata = { "sid" : "xaas", "product" : "test service" }# Размер тома диска, ГБsize = 1# Зона доступностиavailability_zone = "GZ1"# Тип тома дискаvolume_type = "ceph-ssd"} -
ВМ кілттік жұбын жасаңыз.
ivkcs_ssh_keypairресурсын пайдаланыңыз.Кілттік жұп жасау мысалыresource "ivkcs_ssh_keypair" "keypair" {} -
Сервистің жүктеу образынан ВМ жасап, агентті орнатыңыз. Келесі ресурстарды пайдаланыңыз:
-
vkcs_compute_instance. ВМ метадеректерін root-диск үшін көрсетілгендей етіп көрсетіңіз. Бұл бұлттық платформаның ЛК-сындағы Виртуалды машиналар бетінде сервис инстансының ВМ-сін дүкен ВМ-дері үшін бөлек блокта көрсетуге мүмкіндік береді. -
ivkcs_user_data.Сервистің жүктеу образынан ВМ жасау мысалы# Идентификатор развертывания сервисаvariable "instance_uuid" {type = string}# Создание cloud-config конфигурации. Получение данных для инициализации агента на хостеresource "ivkcs_user_data" "init" {# Идентификатор развертывания сервисаuuid = var.instance_uuid# Имена хостов, для которых необходимо сгенерировать cloud-config и где будет установлен агентhosts = ["compute-instance"]# Целевая ОСtarget_os = "almalinux9"# Ключи для доступа по SSHssh_authorized_keys = [ivkcs_ssh_keypair.keypair.public_key,]}resource "vkcs_compute_instance" "compute" {name = "compute-instance"# Идентификатор типа ВМflavor_id = var.ds-flavor# Перечень имен групп безопасности для ВМsecurity_groups = [vkcs_networking_secgroup.secgroup.name]# Зона доступности ВМavailability_zone = "GZ1"# Метаданныеmetadata = { "sid" : "xaas", "product" : "test service" }# Root-дискblock_device {# Идентификатор образа сервисаuuid = vkcs_blockstorage_volume.boot.id# Источник загрузкиsource_type = "volume"# Тип диска. Укажите volume (постоянный)destination_type = "volume"# Тип тома дискаboot_index = 0# Если указано значение true, диск будет удален при удалении ВМdelete_on_termination = true}# Применение cloud-config конфигурации для настройки ВМ. Установка агента# В [] укажите номер хоста. Если сервис развертывается на одной ВМ, значение должно быть 0user_data = ivkcs_user_data.init.user_data[0]# Попытка остановить ВМ перед удалениемstop_before_destroy = true# Тайм-аут создания ВМtimeouts {create = "10m"}}
-
-
Бөлек деректер томын ВМ-ге қосыңыз.
vkcs_compute_volume_attachресурсын пайдаланыңыз.Диск томын ВМ-ге қосудың мысалыresource "vkcs_compute_volume_attach" "attached" {# Идентификатор созданной ВМinstance_id = vkcs_compute_instance.compute.id# Идентификатор присоединяемого тома дискаvolume_id = vkcs_blockstorage_volume.data.id# Зависимости. Диск будет присоединен к ВМ только после создания ресурсов, указанных в зависимостяхdepends_on = [# ВМvkcs_compute_instance.compute,]} -
ВМ деректерін (мысалы, жабық SSH кілтін) шығыс параметрлерінде беріңіз (толығырақ — Шығыс параметрлерінің сипаттамасы бөлімінде).
SDN түрі vkcs_networking_subnet ресурсында sdn параметрі арқылы анықталады, ол келесі мәндердің бірін қабылдай алады:
neutron— OpenStack Neutron негізіндегі SDN.sprut— Sprut негізіндегі SDN.
sdn параметрінің әдепкі мәні бұлттық платформа жобасында әдепкі бойынша орнатылған SDN түріне тең. Егер жобада әдепкі бойынша Sprut негізіндегі SDN түрі берілсе, sdn параметрінің әдепкі мәні sprut болады.
Манифестің басқа ресурстарында ішкі желі деректерін, соның ішінде SDN түрін пайдалану үшін оларды VK CS провайдерінің vkcs_networking_subnet деректер көзі арқылы алыңыз.
data "vkcs_networking_subnet" "subnet" {# Идентификатор подсети, заданный в переменной ds-subnetsubnet_id = var.ds-subnet}
resource "vkcs_networking_secgroup" "secgroup" {name = "security_group"description = "terraform security group"sdn = data.vkcs_networking_subnet.subnet.sdn}
Сыртқы IP-мекенжайлар пулын алу үшін VK CS провайдерінің vkcs_networking_floatingip ресурсын пайдаланыңыз. pool параметрінде сыртқы желі атауын SDN түріне байланысты автоматты түрде анықталатындай етіп беріңіз:
- Егер SDN OpenStack Neutron негізінде болса —
ext-net. - Егер SDN Sprut негізінде болса —
internet.
resource "vkcs_networking_floatingip" "base_fip" {pool = data.vkcs_networking_subnet.subnet.sdn == "neutron" ? "ext-net" : "internet"}
Сервисті қайта орнатқанда ВМ IP-мекенжайы өзгермеуі үшін, ВМ-ге тұрақты IP-мекенжайын тағайындаңыз:
-
IP-мекенжайын ВМ ішкі желісі портына бекітіңіз.
vkcs_networking_portресурсын пайдаланыңыз.IP-мекенжайын портқа байлаудың мысалыresource "vkcs_networking_port" "port" {name = "port name"admin_state_up = "true"# Идентификатор виртуальной сетиnetwork_id = data.vkcs_networking_subnet.subnet.network_id# Идентификатор групп безопасности, применяемых для портаsecurity_group_ids = [vkcs_networking_secgroup.secgroup.id]# Тип SDNsdn = data.vkcs_networking_subnet.subnet.sdnfixed_ip {# Идентификатор подсети, из которой будет назначен IP-адрес портаsubnet_id = var.ds-subnet}}SDN туралы толығырақ — Terraform ресурстарында SDN түрін пайдалану бөлімінде.
-
vkcs_compute_instanceресурсында порт идентификаторын көрсетіңіз:resource "vkcs_compute_instance" "compute" {...network {port = vkcs_networking_port.port.id}}
Сервис инстансына қол жеткізу үшін пароль жасау мақсатында random_password ресурсын пайдаланыңыз.
resource "random_password" "user" {# Использовать или нет специальные символы в паролеspecial = false# Длина пароляlength = 50}
Жасалған парольді пайдаланушыға беру үшін шығыс параметрін пайдаланыңыз (толығырақ — Шығыс параметрлерінің сипаттамасы бөлімінде).