Terraform
Terraformの課題の1つは、モジュールなどに実装を閉じ込めても、そのモジュールのvairables/outputsの型を判別するにはLSP1が脆弱なことです。 VS CodeのLSP機能を使ってF12でコードジャンプして実装を確認するのもいいのですが、GitHubでコードを眺めている…
Terraformの実行結果をoutputで出力するとき、mapやlistから単一文字列(複数行)をHeredocとして出力したいことがあります。 今回はDirectivesとHeredocを使っていい感じの文字列を生成する方法を紹介します。 いい感じの文字列とは いい感じじゃない文字列出…
Terraformを使い始めてしばらくすると出会う課題が、プロジェクトで使用するTerraformバージョンを制約しつつ、Terraform利用者のインストール手間を減らすことです。 Terraformはバージョンアップによって挙動が変わりえるため、プロジェクトで利用するバー…
Terraformはその言語であるHCLがシンプルで分かりやすいのでとっつきやすい、と言われることがあります。 一方で、組み込み関数であれこれある割に、これがないの!? というのもあります。 そのなくてたびたび困るのが、startswithとendswith関数です。 tl;dr…
Infrastructure as Code (以降IaC) で組むときにIaCツールを選ぶ基準はいろいろあり、様々な理由で選ぶことでしょう。 IaCの言語がチームとって扱いやすいか クラウドやサービスへのIaCの対応状況は早い/十分か コミュニティの大きさは十分でググれば情報を…
ベストプラクティスといいつつ、どのような風にやりたいかで変わるというのは往々にしてあります。 ベストプラクティスは求めても意味ないのでどうでもいいとして、いろんなパターンのメリット/デメリットを把握して現状に即しているのかどうかは考え続ける…
for_eachはdataリソースでも使えます。ということは、aws_iam_policyもfor_eachで複数のpolicyをaws_iam_group、 aws_iam_user、 aws_iam_roleといったリソースに紐づけるのをシンプルに定義できそうです。(できます) 一個一個書いてもいいんですけど、attac…
この記事は、Pulumi dotnet Advent Calendar 2019の11日目です。 qiita.com Terraformに慣れているとPulumiもイメージしやすいところはあります。 一方でTerraformとの違いでどうすればいいのかな? となることもあります。 どんなことがあるのか見ます。 TL;…
Terraform 0.12.0がリリースされ、すでに0.12.1がリリースされました。 いくつかのTerraform環境で随時0.11.14から0.12.0にアップグレードしているのですが、その中でAzureRM Providerに関して少し困ったのでメモしておきます。 TL;DR 操作環境 アップグレー…