Size: a a a

2020 February 04

АФ

Александр Фадеев in terraform_ru
вообще идея достаточно проста, из вывода terraform state pull  формировать инвентори для ansible сгруппированные по этим атрибутам. но столкнулся с тем, что например у "openstack_compute_instance_v2" есть и tags  и metadata, у  "vcd_vapp_vm" есть только metadata, а у "docker_container" нет ни того и ни другого. и вот мне стало интересно, возможно ли их как-то добавить иначе, попытался добавить ресурсы через модули и прописать атрибуты в модули, но они никак не фигурируют в выводе terraform state pull, видимо потому, что в провайдере никакого участия не принимают
источник

VT

Victor Tur in terraform_ru
плохая затея в целом.
terraform state pull - не стабильный интерфейс.
Они частенько меняют формат, полагаться на этой не стоит.
Нужно генерить инвентори - сделай себе гибкий output или прям генерируй файл терраформом. Насчет второго не уверен.
Я ansible либо для подготовки образов использую - либо в очень редких случаях с dynamic inventory - который сам все находит.
источник

A

Andor in terraform_ru
John Smith
что-куда импортить-то? как это работает?))
Обычно в описании ресурса написано, как его импортировать
источник

АФ

Александр Фадеев in terraform_ru
Victor Tur
плохая затея в целом.
terraform state pull - не стабильный интерфейс.
Они частенько меняют формат, полагаться на этой не стоит.
Нужно генерить инвентори - сделай себе гибкий output или прям генерируй файл терраформом. Насчет второго не уверен.
Я ansible либо для подготовки образов использую - либо в очень редких случаях с dynamic inventory - который сам все находит.
по сути, это не отличается от любой другой динамик инвентори ансибла, просто источником информации служит терраформ, а не опенстак, вклауд или что-то еще. мне нравится эта идея тем, что это позволило бы унифицировать создание этого инвентори для разных провайдеров
источник

АФ

Александр Фадеев in terraform_ru
ну а формат когда-нибудь устаканится же
источник

РР

Роман Рахманин in terraform_ru
Инвентори и правда лучше формировать из output. Можно даже просто шаблон создать и его из output генерить при каждом apply
источник

РР

Роман Рахманин in terraform_ru
То есть делаешь Template, из него сохраняешь в локальный файл, и внутри темплейта используешь аутпуты. Это сильно лучше, чем парсить стейт
источник

АФ

Александр Фадеев in terraform_ru
но даже так я привязан к атрибутам внутри провайдера, нет?
источник

JS

John Smith in terraform_ru
Andor
Обычно в описании ресурса написано, как его импортировать
Обычно - это когда кто то, кто создавал ресурс, написал как импортировать. А если не написал - не написано
источник

VT

Victor Tur in terraform_ru
Александр Фадеев
по сути, это не отличается от любой другой динамик инвентори ансибла, просто источником информации служит терраформ, а не опенстак, вклауд или что-то еще. мне нравится эта идея тем, что это позволило бы унифицировать создание этого инвентори для разных провайдеров
еще раз - у terraform нет стабильного API пока.
Есть такая штука как output -json, как раз для таких целей сделали. Чтобы передать куда-то и отпарсить. Output ты формируешь сам, между версиями он не меняется. Так должен выводить всегда одно и тоже. Название вывода - значение. Это более менее стабильно.
источник

A

Andor in terraform_ru
John Smith
Обычно - это когда кто то, кто создавал ресурс, написал как импортировать. А если не написал - не написано
"Обычно" - это в документации внизу страницы пишут
источник

РР

Роман Рахманин in terraform_ru
Andor
Обычно в описании ресурса написано, как его импортировать
Там написано, я проверил.
источник

РР

Роман Рахманин in terraform_ru
Там у него другая проблема
источник

A

Andor in terraform_ru
Роман Рахманин
То есть делаешь Template, из него сохраняешь в локальный файл, и внутри темплейта используешь аутпуты. Это сильно лучше, чем парсить стейт
Можно даже не в локальный файл а прямо в какой-нибудь консул или ещё куда
источник

РР

Роман Рахманин in terraform_ru
Andor
Можно даже не в локальный файл а прямо в какой-нибудь консул или ещё куда
Или так, да. Не важно куда, подход один
источник

T

Timur in terraform_ru
господа, а можно ли в {for ... : ...} как-то сделать индекс?
источник

T

Timur in terraform_ru
у меня есть пачка виртуалок (внезапно), созданная по шаблону с заданным count, хочу в output модуля вывести их внешние адреса в виде {index0: ip0, index1: ip1, ...}
источник

T

Timur in terraform_ru
а, можно скостылить zipmap(range(length(resource)), [for i in resource: i.ip])
источник

T

Timur in terraform_ru
спасибо :)
источник

A

Andor in terraform_ru
Timur
господа, а можно ли в {for ... : ...} как-то сделать индекс?
Можно, но покажи что делаешь
источник