AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

Terraform

RDS の role 名を変える

RDS のモニタリングロール Terraform で RDS のモニタリングロールを設定する際、なるべく名前をデフォルトに寄せたくて以下のようにしている。 resource "aws_iam_role" "rds_monitoring_role" { name = "rds-monitoring-role" assume_role_policy = data.a…

Terraform から binbashar/waf-owasp/aws を削除しようとしたら出来なかったので、 terraform state rm で管理外にした

WAF の module WAF を一部 Terraform 管理下でテスト導入していた (BFF に組み込み評価中) のだけど、利用していた binbashar/waf-owasp/aws がもうメンテしないっぽいので、順次削除することにした。 DEPRECATION NOTICE: This module will be not longer m…

Terraform 内に EC2 リソースが含まれるときは ignore_changes に ami を指定する

Terraform で EC2 を作成する ときには、 AMI 参照をパラメータストア経由で行うと良い。 このように。 aws_instance resource "aws_instance" "ec2"{ ami = data.aws_ssm_parameter.amazonlinux2.value ... } aws_ssm_parameter # Parameter Store のパブリ…

Terraform の Invalid index

以下のようなコードの状態で terraform plan terraform destroy など、 state を参照する動作をするとエラーが出ていた。 resource "aws_lb_listener" "alb_https" { ... certificate_arn = module.certificates.certificate_arns[var.lb_certificates["alb"…

Provider registry.terraform.io/hashicorp/template v2.2.0 does not have a package available for your current platform, darwin_arm64.

terraform init 時に掲題のエラーが出て困っていた。 どうやら AppleSillicon 系列に由来するエラーらしい (対象のモジュールが AppleSillicon 対応されずにアーカイブされた?)。 どうする 以下の書き込みの通り tfenv でのインストール時に TFENV_ARCH=amd…

Terraform で db.T. 系インスタンスを扱う時はパフォーマンスインサイトを無効化する

タイトルがすべてのシリーズ。 performance_insights_ 系の記述がエラーになる db.m5.large から db.t4g.medium などにインスタンスサイズをスケールダウンした際に、 Terraform から「パフォーマンスインサイトは使えないよ!」と怒られるなどした。 エラー…

ECS Scheduled Task に cron のかわりをさせる

www.ritolab.com dev.classmethod.jp このあたりを参考にしてシュッと導入した。 感謝感謝。 しかしこれめんどくさいなー、という印象。 コンテナ化するなら cron も外出しするし ecs 系リソースかと思ったら CloudWatch Events だしでもう何がなんだか。 と…

EXC(fargate) を起動するときの vCPU と RAM の組み合わせ

いっつも忘れるんだよな、これもうちょっと楽にならんかな。 docs.aws.amazon.com

シークレットマネージャを使う時は valueFrom だ!

タイトルがすべてシリーズ。 missing required field シークレットマネージャから読み出す環境変数を追加したので、ECS のタスク定義を更新したらエラーになった。 │ Error: failed creating ECS Task Definition (stg-example-ecs-task-definition-backend)…

ClientException: Too many concurrent attempts to create a new revision of the specified family. が出たら、再実行すればいい

タイトルがすべてシリーズ rails db:create を実行するためだけに null_resource (aws_ecs_task_definition.initialize_db という target) を採用しているんだけど、偶然こんなエラーに遭遇した。 ╷ │ Error: failed creating ECS Task Definition (example-…

managed_policy_arns と aws_iam_role_policy_attachment を利用すると apply 毎にアタッチとデタッチを繰り返す

タイトルがすべてシリーズ。 とりあえず 僕の用途では、aws_iam_role_policy_attachment に全部そろえよう、となった。

ECS (fargate) からパブリック IP を剥奪したら SSM とか ECR に接続できずに起動しなくなった

タイトルがすべてシリーズ。 Terraform で管理している ECS (fargate) の 1.4.0 で特定の RAILS_ENV だけ問題が起きる、という現象の調査をしていて、それはほぼ解決したんだけど、なぜか ECS Cluster をデプロイしなおしたら以下のエラーが出るようになった…

Error: adding LB Listener Certificate: UnsupportedCertificate

Terraform を複数環境に対応させる作業をしていたタイミングで、apply 時に「ALB に証明書を追加する動作」が失敗するようになった。 エラーは以下。 Error: adding LB Listener Certificate: UnsupportedCertificate: The certificate 'arn:aws:acm:ap-nort…

Terraform で import した resource を tfstate から削除する

terraform state rm ${リソース名} で消せる。

terraform import 実行時に変数読み込みファイル (var-file) を指定する

追記: これルートドメインを管理しようとしているけど、ルートドメインのホストゾーンは Terraform で管理しないほうが良いらしい (結果として管理やめたので救われた感 -var-file を指定してから terraform の各種第 2 引数にあたるコマンドを書くのだと思…

Terraform を書く時に気をつけること

忘れがちなので、気付いたタイミングで書いておく。 backend に変数 (Variables) は利用できない こんな感じで怒られる。 起動時に引数に渡すか、backend 用に別ファイルを作れとのこと。 │ Error: Variables not allowed │ │ on main.tf line 11, in terraf…

Terraform の backend を S3 にする

ロケ地 Terraform 1.3.6 hashicorp/aws 4.45.0 Error loading state state がローカルやんけ! と気づいて、 backend "s3" を書いて、リモートに手動でバケットを作成 (設定は名前以外、全部変更なしのアクセスきつきつでオッケー)。 後に terraform init -m…

terraform の provider バージョンの確認

一旦 terraform init してあれば terraform providers -version で確認できる。 terraform providers -version Terraform v1.3.6 on darwin_arm64 + provider registry.terraform.io/hashicorp/aws v4.45.0 事前に探したい場合は以下あたりから。 registry.t…

Terraform リソース作成時にデフォルトで付与するタグを管理する

作成したリソースが Terraform 由来であること 複数の企業が単一アカウント ID に AdministratorAccess 持っている という状態のインフラを管理しているので、それぞれ AWS のリソース作成時のタグに Build: Terrafrom Company: 会社名 を付与する運用にして…

terraform plan を保存する

通常 terraform を利用する際は、以下三段構えだと思われる。 terraform init terraform plan terraform apply (-auto-approve) AWS とか Azure、 GCP などのパブリッククラウドであれば「tfstate の管理はリモートでやれ」というのがベストプラクティスなの…