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

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

https://t.me/sysadminof

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.


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



Report Page