Основи роботи з Linux. / Робота з AWS. / Початок роботи.
Робота з 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 і т.д.
Далі маємо можливість використовувати цей 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
Насамперед нам необхідно встановити 2 змінні в оточення
export AWS_ACCESS_KEY_ID=AAAAAA
export AWS_SECRET_ACCESS_KEY=AAAAA
Ідемо сюди http://aws.amazon.com/
Заходимо у консоль.
Установки облікового запису
Генерим секрети.
Вставляємо у .bashrc
Додаємо провайдера cdktf.json
"terraformProviders": [
"hashicorp/aws@~> 3.42"
],
Встановлюємо.
$ cdktf get