Работа со AWS.

Установка terraform

sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform

Установка cdktf

sudo npm install --global cdktf-cli

cdktf - это SDK для terraform. На языке HCL HashiCorp Configuration Language можно создавать конфигурацию серверов как и в формате JSON.

Можно сгенерировать JSON для поддерживаемого языка Python, TypeScript, Java и т.д.

start page

Дале имеем возможность использовать этот JSON при запуске команд Terraform.

Создание окружения

mkdir myprj
cd myprj
cdktf init --template="python" --local

На высшем уровне имеем команду

$ cdktf deploy

Которая производит установку системы.

$ cdktf synth

Этой командой создаем JSON конфигурацию из кода, написанного на Python к примеру.

Конфигурация создается в папке cdktf.out.

cdktf.out ├── manifest.json └── stacks └── learn-cdktf ├── cdk.tf.json └── plan

manifest.json

{
  "version": "0.7.0",
  "stacks": {
    "blog": {
      "name": "blog",
      "constructPath": "blog",
      "workingDirectory": "stacks/blog",
      "synthesizedStackPath": "stacks/blog/cdk.tf.json",
      "annotations": []
    }
  }
}

sdk.tf.json

{
  "//": {
    "metadata": {
      "version": "0.7.0",
      "stackName": "blog",
      "backend": "local"
    }
  }
}

main.py

#!/usr/bin/env python
from constructs import Construct
from cdktf import App, TerraformStack


class MyStack(TerraformStack):
    def __init__(self, scope: Construct, ns: str):
        super().__init__(scope, ns)

        # define resources here


app = App()
MyStack(app, "blog")

app.synth()

Применяем JSON

cd cdktf.out/stacks/blog && terraform apply

start page

Прежде всего нам необходимо установить 2 переменные в окружение

export AWS_ACCESS_KEY_ID=AAAAAA
export AWS_SECRET_ACCESS_KEY=AAAAA

Идем сюда http://aws.amazon.com/

Заходим в консоль.

Настройки аккаунта

start page

Генерим секреты.

Вставляем в .bashrc

Добавляем провайдера в cdktf.json

  "terraformProviders": [
      "hashicorp/aws@~> 3.42"
    ],

Устанавливаем.

$ cdktf get