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

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

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

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

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

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

$ 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}-linux-amd64
chmod +x terraformer-${PROVIDER}-linux-amd64
sudo mv terraformer-${PROVIDER}-linux-amd64 /usr/local/bin/terraformer

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

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

Идем далее.

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

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

$ brew install terraformer

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

$ 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}-darwin-amd64
chmod +x terraformer-${PROVIDER}-darwin-amd64
sudo mv terraformer-${PROVIDER}-darwin-amd64 /usr/local/bin/terraformer

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

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

Идем далее.

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

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

$ terraformer import aws --resources=vpc,subnet --filter=vpc=default --regions=us-east-1
2021/05/31 17:59:22 aws importing region us-east-1
2021/05/31 17:59:22 open /Users/captain/.terraform.d/plugins/darwin_amd64: no such file or directory

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

$ mkdir -p ~/.terraform.d/plugins/darwin_amd64

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

$ terraformer import aws --resources=vpc,subnet --filter=vpc=default --regions=us-east-1

2021/05/31 18:01:14 aws importing region us-east-1
2021/05/31 18:01:14 fork/exec : no such file or directory

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

$ cp -r Projects/Terraform/aws/examples/s3/.terraform/providers/registry.terraform.io/hashicorp/aws/3.42.0/darwin_amd64/terraform-provider-aws_v3.42.0_x5 ~/.terraform.d/plugins/darwin_amd64/

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

$ terraformer import aws --resources=vpc,subnet --filter=vpc=default --regions=us-east-1
2021/05/31 18:13:30 aws importing region us-east-1
2021/05/31 18:13:33 aws importing... vpc
2021/05/31 18:13:34 aws done importing vpc
2021/05/31 18:13:34 aws importing... subnet
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 state... aws_subnet.tfer--subnet-002D-087ab3540e1a1ace4
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-049129ea82abc346a
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-06373f4c58dfe35a9
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-00db3165c99b03ee0
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-07021252bab163bcf
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-02b0ff71a1d00deb2
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-03212d250885f6986
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-04b6d772342323e4f
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-003e3e93d58873d28
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-081b69deddee10c61
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-01b817896302a1b98
2021/05/31 18:13:35 Refreshing state... aws_subnet.tfer--subnet-002D-029a45d1cf920abd6
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

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

$ tree generated
generated
`-- aws
    |-- subnet
    |   |-- outputs.tf
    |   |-- provider.tf
    |   |-- subnet.tf
    |   |-- terraform.tfstate
    |   `-- variables.tf
    `-- vpc
        |-- provider.tf
        `-- terraform.tfstate

3 directories, 7 files

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

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

$ 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.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.