Установка Terraformer в Unix/Linux

Terraformer — Инструмент командной строки, который генерирует файлы TF/JSON и TFState на основе существующей инфраструктуры (reverse Terraform).

Установка Terraformer в Unix/Linux

Есть пару способов как можно установить данную тулзовину себе на рабоче место.

Установка Terraformer в Linux

Простой способ, выполнить:

sh
5 lines

$ export PROVIDER={all,google,aws,kubernetes}
curl LO https://github.com/GoogleCloudPlatform/terraformer/releases/download/$(curl s https://api.github.com/repos/GoogleCloudPlatform/terraformer/releases/latest | grep tag_name | cut d « f 4)/terraformer${PROVIDER}linuxamd64
chmod +x terraformer${PROVIDER}linuxamd64
sudo mv terraformer${PROVIDER}linuxamd64 /usr/local/bin/terraformer

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Так же, можно собрать пакет, склонировавши репу:

sh
1 lines

$ git clone https://github.com/GoogleCloudPlatform/terraformer.git

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Идем далее.

Установка Terraformer в Mac OS

Один из простых способов — это использовать HOMEBREW:

sh
1 lines

terraformer

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Еще можно выполнить:

sh
4 lines

$ export PROVIDER={all,google,aws,kubernetes}
curl LO https://github.com/GoogleCloudPlatform/terraformer/releases/download/$(curl s https://api.github.com/repos/GoogleCloudPlatform/terraformer/releases/latest | grep tag_name | cut d « f 4)/terraformer${PROVIDER}darwinamd64
chmod +x terraformer${PROVIDER}darwinamd64
sudo mv terraformer${PROVIDER}darwinamd64 /usr/local/bin/terraformer

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Так же, можно собрать пакет, склонировавши репу:

sh
1 lines

$ git clone https://github.com/GoogleCloudPlatform/terraformer.git

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Идем далее.

Использование Terraformer в Unix/Linux

Запускаю первый пробный запуск и получаю ошибку:

sh
3 lines

$ terraformer import aws resources=vpc,subnet filter=vpc=default regions=useast1
2021/05/31 17:59:22 aws importing region useast1
/darwin_amd64: no such file or directory

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Решением, — есть создание папок:

sh
1 lines

/darwin_amd64

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

И пробую сново запустить, получаю:

sh
4 lines

$ terraformer import aws resources=vpc,subnet filter=vpc=default regions=useast1
2021/05/31 18:01:14 aws importing region useast1
2021/05/31 18:01:14 fork/exec : no such file or directory

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Решением есть, — скопировать бинарь от провайдера (в моем случае — это AWS), например:

sh
1 lines

/darwin_amd64/

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

И запускаем еще раз:

sh
27 lines

$ terraformer import aws resources=vpc,subnet filter=vpc=default regions=useast1
2021/05/31 18:13:30 aws importing region useast1
2021/05/31 18:13:33 aws importingvpc
2021/05/31 18:13:34 aws done importing vpc
2021/05/31 18:13:34 aws importingsubnet
2021/05/31 18:13:35 aws done importing subnet
2021/05/31 18:13:35 Number of resources for service vpc: 0
2021/05/31 18:13:35 Number of resources for service subnet: 12
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D087ab3540e1a1ace4
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D049129ea82abc346a
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D06373f4c58dfe35a9
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D00db3165c99b03ee0
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D07021252bab163bcf
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D02b0ff71a1d00deb2
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D03212d250885f6986
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D04b6d772342323e4f
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D003e3e93d58873d28
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D081b69deddee10c61
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D01b817896302a1b98
2021/05/31 18:13:35 Refreshing stateaws_subnet.tfersubnet002D029a45d1cf920abd6
2021/05/31 18:13:36 Filtered number of resources for service subnet: 12
2021/05/31 18:13:36 Filtered number of resources for service vpc: 0
2021/05/31 18:13:36 aws Connecting….
2021/05/31 18:13:36 aws save vpc
2021/05/31 18:13:36 aws save tfstate for vpc
2021/05/31 18:13:36 aws save subnet
2021/05/31 18:13:36 aws save tfstate for subnet

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

И так, я сгенерировал стек основываясь на VPC + subnets в определенном регионе. Сам statefile от Терраформа, можно найти по пути:

sh
14 lines

$ tree generated
generated
`— aws
|— subnet
| |— outputs.tf
| |— provider.tf
| |— subnet.tf
| |— terraform.tfstate
| `— variables.tf
`— vpc
|— provider.tf
`— terraform.tfstate
3 directories, 7 files

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Так образом, можно получить всю структуру и при необходимости уменьшить трудозатраты на инвестигейт или рефакторинг существующей структуры

Помощь получить можно выполнив:

sh
15 lines

$ terraformer help
Usage:
[command]
Available Commands:
help Help about any command
import Import current state to Terraform configuration
plan Plan to import current state to Terraform configuration
version Print the version number of Terraformer
Flags:
h, help help for this command
v, version version for this command
Use » [command] —help» for more information about a command.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Не всегда спасет. Но всегда может выручить!

Статья «Установка Terraformer в Unix/Linux» завершена.

Было ли это полезно?

0 / 0