Робота з 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