Open7
terraform
環境構築(docker)
version: '3'
services:
tf:
image: hashicorp/terraform:latest
working_dir: /mnt
volumes:
- ./src:/mnt
env_file:
- .env
entrypoint: >
tail -f /dev/null
docker-compose.ymlを定義してコンテナを起動すればOK
docker compose up -d
docker compose exec tf sh
コンテナ内でterraformコマンドを使う
terraform --help
terraformで CockroachDBクラスタを作成する。
- CockroachDBのアカウント登録
- githubアカウントがあればすぐ作れる
- CockroachDBのサービスアカウントの作成(Access Management→ Service accounts → Create Service Account)
- ※ secret_keyをコピーしておくこと
- 参考:https://www.cockroachlabs.com/docs/cockroachcloud/console-access-management#service-accounts
- tf ファイルを作成
main.tf
terraform {
required_providers {
cockroach = {
source = "cockroachdb/cockroach"
version = "0.2.0"
}
}
}
variable "cluster_name" {
type = string
nullable = false
}
variable "sql_user_name" {
type = string
nullable = false
default = "maxroach"
}
variable "sql_user_password" {
type = string
nullable = false
sensitive = true
}
variable "serverless_spend_limit" {
type = number
nullable = false
default = 0
}
variable "cloud_provider" {
type = string
nullable = false
default = "GCP"
}
variable "cloud_provider_regions" {
type = list(string)
nullable = false
default = ["asia-southeast1"]
}
provider "cockroach" {
# export COCKROACH_API_KEY with the cockroach cloud API Key
}
resource "cockroach_cluster" "cockroach" {
name = var.cluster_name
cloud_provider = var.cloud_provider
serverless = {
spend_limit = var.serverless_spend_limit
}
regions = [for r in var.cloud_provider_regions : { name = r }]
}
resource "cockroach_sql_user" "cockroach" {
id = cockroach_cluster.cockroach.id
name = var.sql_user_name
password = var.sql_user_password
}
- コンテナ内で下記のコマンドを実行することで作成できる!
export COCKROACH_API_KEY=<サービスアカウント作成時にコピーしたsecret>
terraform init
terraform apply \
-auto-approve \
-var="cluster_name=<クラスタ名>" \
-var="sql_user_name=<DBのユーザ名>" \
-var="sql_user_password=<DBのパスワード>"
参考
terraform × GCP 実行メモ
ざっくり手順
- GCPサービスアカウント作成
- サービスアカウントにリソース作成に必要な権限を付与
- project内容を記載するtfファイルと リソース作成の定義のtfファイルを作成
- terraform plan コマンドで 実行できるか確認
- terraform apply コマンドで実行し、リソース作成
main.tf(project内容を記載するtfファイル)
provider "google" {
credentials = "<GCPさーびすアカウント>.json"
project = "<プロジェクト名>"
region = "<GCPリージョン>"
}
terraform × aws(local stack) 実行メモ
環境構築
docker-compose.yml ファイルの作成
version: '2.1'
services:
localstack:
image: localstack/localstack:0.12.1
environment:
- DEBUG=0
volumes:
- "./localstack:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
tf:
image: hashicorp/terraform:latest
working_dir: /mnt
volumes:
- ./src:/mnt
entrypoint: >
tail -f /dev/null
下記のコマンドを実行する
version: '2.1'
services:
localstack:
image: localstack/localstack:0.12.1
environment:
- DEBUG=0
volumes:
- "./localstack:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
tf:
image: hashicorp/terraform:latest
working_dir: /mnt
volumes:
- ./src:/mnt
entrypoint: >
tail -f /dev/null
terraform のサンプルコードを作成
terraform {
backend "local" {}
}
provider "aws" {
region = "ap-northeast-1"
access_key = "hoge"
secret_key = "piyo"
s3_use_path_style = true
skip_credentials_validation = true
skip_metadata_api_check = true
skip_requesting_account_id = true
endpoints {
s3 = "http://localstack:4566"
}
}
resource "aws_s3_bucket" "my-bucket" {
bucket = "my-tf-test-bucket"
}
EOF
gg
起動
docker compose up -d
docker compose exec tf sh
terraform init
terraform apply