This commit is contained in:
Nikita Sorokin
2023-09-28 16:08:15 +03:00
parent 739289fbb8
commit 83ca627cea
44 changed files with 1994 additions and 123 deletions

View File

@@ -0,0 +1,37 @@
/*
Получение stack по его id
*/
#Расскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
/*
terraform {
required_providers {
decort = {
version = "4.4.0"
source = "basis/decort/decort"
}
}
}
*/
provider "decort" {
authenticator = "oauth2"
#controller_url = <DECORT_CONTROLLER_URL>
controller_url = "https://alpha.dev.decs.online"
#oauth2_url = <DECORT_SSO_URL>
oauth2_url = "https://sso-alpha.dev.decs.online"
allow_unverified_ssl = true
}
data "decort_stack" "stack" {
#обязательный параметр
#тип - число
#идентификатор стека
stack_id = 2
}
output "test" {
value = data.decort_stack.stack
}

View File

@@ -0,0 +1,64 @@
/*
Получение списка stack
*/
#Расскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
/*
terraform {
required_providers {
decort = {
version = "4.4.0"
source = "basis/decort/decort"
}
}
}
*/
provider "decort" {
authenticator = "oauth2"
#controller_url = <DECORT_CONTROLLER_URL>
controller_url = "https://alpha.dev.decs.online"
#oauth2_url = <DECORT_SSO_URL>
oauth2_url = "https://sso-alpha.dev.decs.online"
allow_unverified_ssl = true
}
data "decort_stack_list" "stack_list" {
#необязательный параметр
#тип - число
#фильтрация списка для получения информации о конкретном stack по его id
#by_id =
#необязательный параметр
#тип - строка
#фильтрация списка для получения информации о конкретном stack по его имени
#name = "alpha-cpu-04"
#необязательный параметр
#тип - строка
#фильтрация списка для получения информации о конкретном stack по его типу
#type = "KVM"
#необязательный параметр
#тип - строка
#фильтрация списка для получения информации о конкретном stack по его статусу
#status = "ENABLED"
#номер страницы для отображения
#опциональный параметр
#тип - число
#если не задан - выводятся все доступные данные
#page = 2
#размер страницы
#опциональный параметр
#тип - число
#если не задан - выводятся все доступные данные
#size = 3
}
output "test" {
value = data.decort_stack_list.stack_list
}

View File

@@ -0,0 +1,50 @@
/*
Пример использования
Ресурса vins static routes
Ресурс позволяет:
1. Создавать static routes
2. Удалять static routes
3. Получать информацию о всех static routes в данном Vins
4. Предоставлять доступ виртуальным машинам к static routes
5. Удалять доступ виртуальным машинам к static routes
*/
#Расскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
/*
terraform {
required_providers {
decort = {
version = "<VERSION>"
source = "basis/decort/decort"
}
}
}
*/
provider "decort" {
authenticator = "oauth2"
#controller_url = <DECORT_CONTROLLER_URL>
controller_url = "https://mr4.digitalenergy.online"
#oauth2_url = <DECORT_SSO_URL>
oauth2_url = "https://sso.digitalenergy.online"
allow_unverified_ssl = true
}
data "decort_vins_static_route" "route" {
#обязательный параметр
#id vins в котором добавлены routes
#тип - число
vins_id = 1111
#обязательный параметр
#id route
#тип - число
route_id = 1
}
output "route" {
value = decort_vins_static_route.route
}

View File

@@ -0,0 +1,45 @@
/*
Пример использования
Ресурса vins static routes
Ресурс позволяет:
1. Создавать static routes
2. Удалять static routes
3. Получать информацию о всех static routes в данном Vins
4. Предоставлять доступ виртуальным машинам к static routes
5. Удалять доступ виртуальным машинам к static routes
*/
#Расскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
/*
terraform {
required_providers {
decort = {
version = "<VERSION>"
source = "basis/decort/decort"
}
}
}
*/
provider "decort" {
authenticator = "oauth2"
#controller_url = <DECORT_CONTROLLER_URL>
controller_url = "https://mr4.digitalenergy.online"
#oauth2_url = <DECORT_SSO_URL>
oauth2_url = "https://sso.digitalenergy.online"
allow_unverified_ssl = true
}
data "decort_vins_static_route_list" "list" {
#обязательный параметр
#id vins в котором добавлены routes
#тип - число
vins_id = 1111
}
output "list" {
value = decort_vins_static_route_list.list
}

View File

@@ -77,32 +77,47 @@ resource "decort_bservice_group" "bsg" {
#драйвер
#обязательный параметр
#тип - число
#тип - строка
driver = "kvm_x86"
#id сетей extnet
#обязательный параметр
#тип - массив чисел
#должен быть использован vins или extnets
extnets = [1111]
#id сетей vinses
#обязательный параметр
#тип - массив чисел
#должен быть использован vins или extnets
#vinses = [1111, 2222]
#время таймуата перед стартом
#id Storage endpoint provider
#необязательный параметр
#тип - число
#используется при создании ресурса
#timeout_start = 0
sep_id = 3
#Наименование SEPPool используется если установлен sepId, также может быть пустым
#необязательный параметр
#тип - строка
sep_pool = "name"
#тег группы
#необязательный параметр
#тип - строка
#используется при создании и редактировании ресурса
# role = "tf_test_changed"
role = "tf_test_changed"
#id сетей extnet
#необязательный параметр
#тип - массив чисел
#должен быть использован vins или extnets
extnets = [1111, 2222]
#id сетей vinses
#необязательный параметр
#тип - массив чисел
#должен быть использован vins или extnets
vinses = [1111, 2222]
#время таймуата перед стартом
#необязательный параметр
#тип - число
#используется при создании ресурса
timeout_start = 0
#Перечень аргументов для cloud-init создаваемым группам узлов Worker
#необязательный параметр
#тип - файл
cloud_init = file("initconfig.tftpl")
#id групп родителей
#необязательный параметр
@@ -113,13 +128,14 @@ resource "decort_bservice_group" "bsg" {
#принудительное обновление параметров выч. мощностей (ram,disk,cpu) и имени группы
#необязательный параметр
#тип - булев тип
#используется при редактировании
#используется при редактировании ресурса
#по-умолчанию - false
#force_update = true
#старт/стоп вычислительных мощностей
#необязательный параметр
#тип - булев тип
#используется при редактировании
#используется при редактировании ресурса
#по-умолчанию - false
#start = false
@@ -141,6 +157,7 @@ resource "decort_bservice_group" "bsg" {
#тип - строка
#используется в связке с comp_count при редактировании группы
#возможные варианты - RELATIVE и ABSOLUTE
#по-умолчанию - "RELATIVE"
#mode = "RELATIVE"
}

View File

@@ -13,11 +13,12 @@ terraform {
*/
provider "decort" {
authenticator = "oauth2"
oauth2_url = "https://sso.digitalenergy.online"
controller_url = "https://mr4.digitalenergy.online"
app_id = ""
app_secret = ""
authenticator = "oauth2"
#controller_url = <DECORT_CONTROLLER_URL>
controller_url = "https://ds1.digitalenergy.online"
#oauth2_url = <DECORT_SSO_URL>
oauth2_url = "https://sso.digitalenergy.online"
allow_unverified_ssl = true
}
resource "decort_k8s" "cluster" {
@@ -49,7 +50,6 @@ resource "decort_k8s" "cluster" {
# список labels для дефолтной worker группы
# опциональный параметр
# В скором времени параметры labels, annotations, taints будут полностью перенесены в блок workers
# тип - массив строк
labels = ["key1=val1", "key2=val2"]
@@ -80,29 +80,32 @@ resource "decort_k8s" "cluster" {
#тип - число
cpu = 2
#кол-во RAM в Мбайтах
#обязательный параметр
#тип - число
ram = 2048
#размер диска в Гбайтах
#обязательный параметр
#тип - число
disk = 10
}
#идентификатор SEP для создания загрузочных дисков для master узлов
#опциональный параметр
#тип - число
sep_id = 3
#наименование MasterSEPPool используется если установлен master sepId, также может быть пустым
#опциональный параметр
#тип - строка
sep_pool = "data_01"
}
#настройка worker группы
#опциональный параметр
#Первая указанная воркер-группа должна соответствовать изначально созданной вместе с кластером.
# labels, annotations, taints для дефолтной worker группы указываются в корне ресурса при создании кластера.
workers {
#наименование worker группы
#обязательный параметр
#тип - строка
name = "workers_wg"
#кол-во node
#обязательный параметр
#тип - число
@@ -187,6 +190,89 @@ resource "decort_k8s" "cluster" {
#тип - массив строк
taints = ["key1=value1:NoSchedule", "key2=value2:NoExecute"]
}
# id extnet
#опциональный параметр
#тип - число
extnet_id = 0
# id vins
# опциональный параметр
# тип - число
vins_id = 1234
# создать Kubernetes cluster с masters nodes с подключенным LB
# опциональный параметр
# тип - булев тип
with_lb = true
# пользовательские значения sysctl для LB
# опциональный параметр
# тип - строка
lb_sysctl_params = "some"
# позволяет создать схему отказоустройчивой LB
# опциональный параметр
# тип - булев тип
ha_mode = true
# дополнительные SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes;
# возможность взаимодействовать с кластером по FQDN
# параметр получает список строк IP-адреса и/или DNS (по формату RFC 1123 c поддержкой wildcard)
# опциональный параметр
# тип - массив строк
additional_sans = ["192.168.201.0","192.168.201.1"]
# используется для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере
# это позволяет вам настраивать такие вещи, как регистрация node, настройка network и другие задачи инициализации
# опциональный параметр
# тип - строка
init_config = "{JSON string}"
# используется для определения глобальных настроек и конфигураций для всего кластера
# он включает в себя такие параметры, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации в масштабах кластера
# опциональный параметр
# тип - строка
cluster_config = "{JSON string}"
# используется для настройки поведения и параметров Kubelet, который является агентом primary node, запускаемым на каждом node кластера
# он включает в себя такие параметры, как IP-адрес node, распределение ресурсов, политики удаления модулей и другие конфигурации, специфичные для Kubelet
# опциональный параметр
# тип - строка
kubelet_config = "{JSON string}"
# используется для настройки поведения и параметров присоединения node к кластеру
# он включает в себя такие параметры, как режим прокси-сервера, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy
# опциональный параметр
# тип - строка
kube_proxy_config = "{JSON string}"
# используется для настройки поведения и параметров присоединения node к кластеру
# он включает в себя такие параметры, как cluster's control plane endpoint, токен и ключ сертификата
# опциональный параметр
# тип - строка
join_config = "{JSON string}"
# описание кластера
# опциональный параметр
# тип - строка
desc = "description"
# перечень аргументов для cloud-init создаваемым группам узлов Worker
# необязательный параметр
# тип - файл
cloud_init = file("initconfig.tftpl")
# при создании кластре использовать подключение только к сети ExtNet
# опциональный параметр
# тип - булев тип
extnet_only = true
# добавить ssl-сертификат в формате x509 pem
# необязательный параметр
# тип - файл
oidc_cert = file("ca.crt")
}
output "test_cluster" {

View File

@@ -41,13 +41,15 @@ resource "decort_lb" "lb" {
#тип - строка
name = "tf-test-lb"
#id внешней сети и id виртуальной сети не могут быть одновременно = 0
#id внешней сети
#обязательный параметр
#опциональный параметр
#тип - число
extnet_id = 6
#id виртуальной сети
#обязательный параметр
#опциональный параметр
#тип - число
vins_id = 758
@@ -59,6 +61,11 @@ resource "decort_lb" "lb" {
#то для успешного старта, он должен быть доступен (enable = true)
start = true
# позволяет создать схему отказоустройчивой LB
# опциональный параметр
# тип - булев тип
ha_mode = true
#описание
#опциональный параметр
#тип - строка

View File

@@ -0,0 +1,74 @@
/*
Пример использования
Ресурса vins static routes
Ресурс позволяет:
1. Создавать static routes
2. Удалять static routes
3. Получать информацию о всех static routes в данном Vins
4. Предоставлять доступ виртуальным машинам к static routes
5. Удалять доступ виртуальным машинам к static routes
*/
#Расскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
/*
terraform {
required_providers {
decort = {
version = "<VERSION>"
source = "basis/decort/decort"
}
}
}
*/
provider "decort" {
authenticator = "oauth2"
#controller_url = <DECORT_CONTROLLER_URL>
controller_url = "https://mr4.digitalenergy.online"
#oauth2_url = <DECORT_SSO_URL>
oauth2_url = "https://sso.digitalenergy.online"
allow_unverified_ssl = true
}
resource "decort_vins_static_route" "sr" {
#id Vins
#обязательный параметр
#тип - число
vins_id = 1111
# destination network
# обязательный параметр
#тип - строка
destination = "192.168.201.0"
# destination network mask
#обязательный параметр
#тип - строка
netmask = "255.255.255.255"
# IP-адрес из пула свободных IP-адресов ViNS ID
#обязательный параметр
#тип - строка
gateway = "192.168.201.40"
# список виртуальных машин, которым будет предоставлен доступ к роуту
#опциональный параметр
#тип - массив чисел
compute_ids = [111,222]
}
output "sr" {
value = decort_vins_static_route.sr
}
data "decort_vins_static_routes_list" "list" {
vins_id = 1111
}
output "list" {
value = decort_vins_static_routes_list.list
}