Size: a a a

2020 February 12

A

Andor in terraform_ru
Я не шарю в vcloud, но может оно точно так же поддерживает cloud-init как и другие?
источник

R

Roman in terraform_ru
Не знаю. Пойду погуглю
источник

AK

Andrey Kartashov in terraform_ru
Roman
Провайдер vcloud director. Через terraform можно как то импортировать публичный ssh ключ в виртуальную машину, как это можно делать в GCP? Или только создавать образ с уже импортированным ключем?
через initscript
источник

R

Roman in terraform_ru
Andrey Kartashov
через initscript
имеешь ввиду через блок
guest_properties = {}
?
источник

AK

Andrey Kartashov in terraform_ru
Roman
имеешь ввиду через блок
guest_properties = {}
?
источник

R

Roman in terraform_ru
а, этот параметр я не заметил. Спасибо
источник

DS

Dmitry SH in terraform_ru
Здравствутйте.
Подскажите пожалуйста, какими директивами/инструментами в Терраформ можно реализовать цикл for..for..

Terraform openstack, задача,

Прописать такой шаблон, который будет создавать определенное количество инстансов(10-100-1000) и такое же количество сетей IPv6(именно отдельных сетей, не подсетей), будет выделять из создаваемой сети(1 адрес на  каждого участника abcd::1 , abcd ::2) определенные адреса - присваивать порт созданному инстансу/группе.
Рекомендуют использовать вложенные циклы, но из всех руководств, что не читал инструментов аля цикл for .. for ... не встречал.
встречал, только count.index

Может есть у кого идеи, как реализовать подобное и какие конструкции могут помочь в реализации?

Проблема в реализации создания определенного количества сетей, создания портов и присваивания портов инстансам на основе адресного пространства.
В документации написано, что если мы хотим задать определенные порты, создавайте отдельный resource под явную привязку, а если у меня будет 1000 инстансов, неужели мне нужно будет прописывать в template'e 1000 правил? Как тут применить подход DRY - do not repeat yourself?
источник

AK

Andrey Kartashov in terraform_ru
Dmitry SH
Здравствутйте.
Подскажите пожалуйста, какими директивами/инструментами в Терраформ можно реализовать цикл for..for..

Terraform openstack, задача,

Прописать такой шаблон, который будет создавать определенное количество инстансов(10-100-1000) и такое же количество сетей IPv6(именно отдельных сетей, не подсетей), будет выделять из создаваемой сети(1 адрес на  каждого участника abcd::1 , abcd ::2) определенные адреса - присваивать порт созданному инстансу/группе.
Рекомендуют использовать вложенные циклы, но из всех руководств, что не читал инструментов аля цикл for .. for ... не встречал.
встречал, только count.index

Может есть у кого идеи, как реализовать подобное и какие конструкции могут помочь в реализации?

Проблема в реализации создания определенного количества сетей, создания портов и присваивания портов инстансам на основе адресного пространства.
В документации написано, что если мы хотим задать определенные порты, создавайте отдельный resource под явную привязку, а если у меня будет 1000 инстансов, неужели мне нужно будет прописывать в template'e 1000 правил? Как тут применить подход DRY - do not repeat yourself?
for_each нужен
источник

AK

Andrey Kartashov in terraform_ru
хотя count тоже подойдёт.
источник

AK

Andrey Kartashov in terraform_ru
кстати непонятно, в каком месте нужны вложенные циклы в этой задаче
источник

DS

Dmitry SH in terraform_ru
Andrey Kartashov
хотя count тоже подойдёт.
Дали наводку на вложенные циклы, сама суть отойти от повторяющихся саписей вида:
т.е. нужно извлечь определенный порт из списка для определенного инстанса и желательно в цикле, а как это связать, у меня пока не хватает мозга/понимания


resource "openstack_compute_interface_attach_v2" "Compute_02_ai" {
 instance_id = openstack_compute_instance_v2.computes[1].id
 port_id     = openstack_networking_port_v2.ports_2.*.id[3]
}
resource "openstack_compute_interface_attach_v2" "Compute_02_2_ai" {
 instance_id = openstack_compute_instance_v2.computes[1].id
 port_id     = openstack_networking_port_v2.ports_2.*.id[8]
}

resource "openstack_compute_interface_attach_v2" "Compute_03_ai" {
 instance_id = openstack_compute_instance_v2.computes[2].id
 port_id     = openstack_networking_port_v2.ports_2.*.id[4]
}
resource "openstack_compute_interface_attach_v2" "Compute_03_2_ai" {
 instance_id = openstack_compute_instance_v2.computes[2].id
 port_id     = openstack_networking_port_v2.ports_2.*.id[9]
}
источник

N

Nikolai in terraform_ru
Dmitry SH
Здравствутйте.
Подскажите пожалуйста, какими директивами/инструментами в Терраформ можно реализовать цикл for..for..

Terraform openstack, задача,

Прописать такой шаблон, который будет создавать определенное количество инстансов(10-100-1000) и такое же количество сетей IPv6(именно отдельных сетей, не подсетей), будет выделять из создаваемой сети(1 адрес на  каждого участника abcd::1 , abcd ::2) определенные адреса - присваивать порт созданному инстансу/группе.
Рекомендуют использовать вложенные циклы, но из всех руководств, что не читал инструментов аля цикл for .. for ... не встречал.
встречал, только count.index

Может есть у кого идеи, как реализовать подобное и какие конструкции могут помочь в реализации?

Проблема в реализации создания определенного количества сетей, создания портов и присваивания портов инстансам на основе адресного пространства.
В документации написано, что если мы хотим задать определенные порты, создавайте отдельный resource под явную привязку, а если у меня будет 1000 инстансов, неужели мне нужно будет прописывать в template'e 1000 правил? Как тут применить подход DRY - do not repeat yourself?
тогда тебе нужен просто один счетчик count и все. я решал подобное правда с другими ресурсами
источник

AK

Andrey Kartashov in terraform_ru
Dmitry SH
Дали наводку на вложенные циклы, сама суть отойти от повторяющихся саписей вида:
т.е. нужно извлечь определенный порт из списка для определенного инстанса и желательно в цикле, а как это связать, у меня пока не хватает мозга/понимания


resource "openstack_compute_interface_attach_v2" "Compute_02_ai" {
 instance_id = openstack_compute_instance_v2.computes[1].id
 port_id     = openstack_networking_port_v2.ports_2.*.id[3]
}
resource "openstack_compute_interface_attach_v2" "Compute_02_2_ai" {
 instance_id = openstack_compute_instance_v2.computes[1].id
 port_id     = openstack_networking_port_v2.ports_2.*.id[8]
}

resource "openstack_compute_interface_attach_v2" "Compute_03_ai" {
 instance_id = openstack_compute_instance_v2.computes[2].id
 port_id     = openstack_networking_port_v2.ports_2.*.id[4]
}
resource "openstack_compute_interface_attach_v2" "Compute_03_2_ai" {
 instance_id = openstack_compute_instance_v2.computes[2].id
 port_id     = openstack_networking_port_v2.ports_2.*.id[9]
}
сложна.
есть входное число N.  Создаётся N инстансов и N сетей. В каком месте вложенные циклы то нужны?
источник

AK

Andrey Kartashov in terraform_ru
почему id идут не по порядку а 3 8 4 9? Обрисуй нормально задачу человеческим языком
источник

AK

Andrey Kartashov in terraform_ru
reverse engineering под конец рабочего дня не очень работает
источник

DS

Dmitry SH in terraform_ru
ок=)
есть 2 главных свитча от каждого свитча идет соединение отдельной сеткой IPv6 к инстансу, инстансов может быть 5-10-20-100. Соответственно, на основе количества инстансов и свитчей создается определенное количество сетей и портов, затем порты должны навешиваться на свитчи и инстансы следующим образом.
Каждый из свичтей соединен с каждым из инстансов. У свитчей адреса abcd::1,  у инстансов адреса abcd::2.
Привязки интерфейсов дублироваться не должны, задачу я кое-как в шаблоне изобразил, но при малейшем изменении/масштабировании нужно будет сидеть править и добавлять директивы и адреса.
Задача сделать так, чтобы количество сетей, портов создавалось в зависимости от количества инстансов, привязки портов осуществлялись автоматически, а не путем правки шаблона.
источник

DS

Dmitry SH in terraform_ru
в Terraform Up & Running похожих примеров не нашел(
источник

AK

Andrey Kartashov in terraform_ru
так, погоди. На входе у тебя что? N - количество инстансов и M - количество свичей? И тебе надо создать N инстансов, N*M сетей и N*M портов?
источник

DS

Dmitry SH in terraform_ru
Да, примерно так, создать сами ресурсы - не проблема, основная проблема дублирование явных привязок портов к инстансам, директивы повторяются, необходимо отойти от повторения директив и следовать DRY - do not repeat yourself.
+ при изменении количества единиц ничего не ломалось=)
источник

AK

Andrey Kartashov in terraform_ru
Dmitry SH
Да, примерно так, создать сами ресурсы - не проблема, основная проблема дублирование явных привязок портов к инстансам, директивы повторяются, необходимо отойти от повторения директив и следовать DRY - do not repeat yourself.
+ при изменении количества единиц ничего не ломалось=)
compute_resource "computes" {
 count = N
 ...
}

switch_resource "switches" {
 count = M
 ...
}

port_resource "ports" {
 count = N*M
 # compute index will be = floor(count.index/M)
 # port index will be    = count.index - floor(count.index/M)*M
 ...
}
источник