tech.guitarrapc.cóm

Technical updates

Terraform

terraformの自前モジュールのドキュメントをCIで自動整備する

Terraformの課題の1つは、モジュールなどに実装を閉じ込めても、そのモジュールのvairables/outputsの型を判別するにはLSP1が脆弱なことです。 VS CodeのLSP機能を使ってF12でコードジャンプして実装を確認するのもいいのですが、GitHubでコードを眺めている…

TerraformのString DirectivesとHeredocを使っていい感じの文字列を生成する

Terraformの実行結果をoutputで出力するとき、mapやlistから単一文字列(複数行)をHeredocとして出力したいことがあります。 今回はDirectivesとHeredocを使っていい感じの文字列を生成する方法を紹介します。 いい感じの文字列とは いい感じじゃない文字列出…

tenvを使って任意のTerraformバージョンを実行する

Terraformを使い始めてしばらくすると出会う課題が、プロジェクトで使用するTerraformバージョンを制約しつつ、Terraform利用者のインストール手間を減らすことです。 Terraformはバージョンアップによって挙動が変わりえるため、プロジェクトで利用するバー…

Terraform に startswith と endswith が来る

Terraformはその言語であるHCLがシンプルで分かりやすいのでとっつきやすい、と言われることがあります。 一方で、組み込み関数であれこれある割に、これがないの!? というのもあります。 そのなくてたびたび困るのが、startswithとendswith関数です。 tl;dr…

Infrastructure as Code に最低限求めること

Infrastructure as Code (以降IaC) で組むときにIaCツールを選ぶ基準はいろいろあり、様々な理由で選ぶことでしょう。 IaCの言語がチームとって扱いやすいか クラウドやサービスへのIaCの対応状況は早い/十分か コミュニティの大きさは十分でググれば情報を…

Terraform の構成

ベストプラクティスといいつつ、どのような風にやりたいかで変わるというのは往々にしてあります。 ベストプラクティスは求めても意味ないのでどうでもいいとして、いろんなパターンのメリット/デメリットを把握して現状に即しているのかどうかは考え続ける…

terraformのfor_eachでdataをいい感じで渡す

for_eachはdataリソースでも使えます。ということは、aws_iam_policyもfor_eachで複数のpolicyをaws_iam_group、 aws_iam_user、 aws_iam_roleといったリソースに紐づけるのをシンプルに定義できそうです。(できます) 一個一個書いてもいいんですけど、attac…

Pulumi がTerraform と比較したときに困ったこと

この記事は、Pulumi dotnet Advent Calendar 2019の11日目です。 qiita.com Terraformに慣れているとPulumiもイメージしやすいところはあります。 一方でTerraformとの違いでどうすればいいのかな? となることもあります。 どんなことがあるのか見ます。 TL;…

Terraform 0.11.14から0.12.0 にアップグレードを行う

Terraform 0.12.0がリリースされ、すでに0.12.1がリリースされました。 いくつかのTerraform環境で随時0.11.14から0.12.0にアップグレードしているのですが、その中でAzureRM Providerに関して少し困ったのでメモしておきます。 TL;DR 操作環境 アップグレー…