CLOVER🍀

That was when it all began.

Terraform

TerratestでTerraformのテストを書いてみる

これは、なにをしたくて書いたもの? Terraformに対するテストコードを書くのに、Terratestというものが使えるというようなので。 こちらを試してみようかな、と。 Terratest Terratestとは、インフラストラクチャーをテストするためのパターン、ヘルパー関…

Terragruntを使って、複数のTerraformモジュールの操作を1回のコマンド実行で行う

これは、なにをしたくて書いたもの? Terragruntを学ぶシリーズ。今回でひと区切りの予定です。 最後は、Terragruntを使って複数のTerraformモジュールの操作を1回のコマンド実行で行ってみます。 Terragruntで、Terraformモジュールの操作を1度に行う Terra…

Terragruntを使って、環境ごとのTerraformの構成ファイルを削減する

これは、なにをしたくて書いたもの? Terragruntを学ぶシリーズ。 今回は、Terragruntを使って環境ごとに作るTerraformの構成ファイルを減らしてみます。 Terragruntで、環境ごとの構成ファイルを減らす Terraformを使って、複数の環境を構築、管理するのに…

Terragruntを使って、Terraform実行時の引数やオプション指定をまとめてみる

これは、なにをしたくて書いたもの? Terragruntを学ぶシリーズ。 次は、Terragruntを使ってTerraform実行時の引数やオプション指定をまとめてみます。 Terragruntで、Terraform実行時の引数やオプション指定をまとめる Terraformを実行する時に、引数やオプ…

Terragruntを使って、TerraformのProvider定義をまとめてみる

これは、なにをしたくて書いたもの? 前に、Terragruntを使ってTerraform Backendの定義をまとめてみました。 TerragruntをUbuntu Linux 20.04 LTSにインストールして、Terraform Backendの定義をまとめてみる - CLOVER 今度は、Providerの定義をまとめてみ…

TerragruntをUbuntu Linux 20.04 LTSにインストールして、Terraform Backendの定義をまとめてみる

これは、なにをしたくて書いたもの? Terraformを使うの時にTerragrantというラッパーを使うと便利、みたいな話があるようなので少し試してみようかなと。 Terragrunt | Terraform wrapper Terragrunt TerragruntとはGruntworkが作成しているTerraformのラッ…

Terraformのコレクションには、単一のデータ型のみが格納可能だという話

これは、なにをしたくて書いたもの? Terraformのコレクションが、単一のデータ型のみが格納可能だということを、ちゃんと把握できていなかったのでメモとして。 Type Constraints - Configuration Language - Terraform by HashiCorp 平たく言うと、anyを勘…

Terraformでリソースやモジュールに適用するProviderを、エイリアスで指定する

これは、なにをしたくて書いたもの? Terraformで、同じ種類のProviderであってもエイリアスを使って異なる構成のProviderとして定義し、適用するリソースや モジュールに応じてどのProviderを使うか選択することができます。 Provider Configuration / alia…

Terraformのprovidersコマンドを試す

これは、なにをしたくて書いたもの? Terraformのprovidersというコマンドにちょっと興味があったので、調べてみようかと。 terraform providersコマンド providersと言っているのは、terraformに含まれるコマンドです。 Command: providers - Terraform by …

Terraformで、参照している外部モジュールを強制的に再取得する

たとえば、Terraformで外部モジュールをGitリポジトリで参照している場合を考えます。 Module Sources / Generic Git Repository module "vpc" { source = "git::https://example.com/vpc.git" } module "storage" { source = "git::ssh://username@example.…

Terraformで使う外部モジュールが、内部でサブモジュールを使用していた場合の挙動を確認する

これは、なにをしたくて書いたもの? Terraformを使っていると、自分でモジュールを作ることがあります。 最初は、自前のルートモジュール内にサブモジュールを作り、こんな感じで使うのだと思います。 module "my_module" { source = "./modules/my_module"…

Terraformのcount、for_eachに作成前のリソースの情報を指定できないという話

これは、なにをしたくて書いたもの? Terraformでcountを使っていた時にこんなエラーに当たったので、「これはなんだろう?」と思い。 The "count" value depends on resource attributes that cannot be determined until apply, so Terraform cannot predi…

TerraformでリソースやモジュールのOutputを一括で設定する

これは、なにをしたくて書いたもの? Terraformを使っていて、 output "xxx" { value = resource_a.this.xxx } output "yyy" { value = resource_a.this.yyy } output "zzz" { value = resource_a.this.zzz } ... といった感じで、あるリソースやモジュール…

GitLabをTerraformのStateの保存先として使う

これは、なにをしたくて書いたもの? GitLab 13.0で、TerraformのStateのバックエンドとして利用できるようになったというのを見かけまして。 GitLab 13.0 released with Gitaly Clusters, Epic Hierarchy on Roadmaps, and Auto Deploy to ECS / GitLab HTT…

Terraformリソース間の依存関係を確認する

これは、なにをしたくて書いたもの? Terraformのリソース間の依存関係について、ちゃんと学んでおきたいなと思いまして。 リソース間の依存関係について Terraformのドキュメントで、リソースについて書かれているページを見てみます。 Resources - Configu…

Terraformで、リソースを作成する・しないをコントロールしたい

これは、なにをしたくて書いたもの? Terraformでリソースを作るにあたり、条件によって作る・作らないをコントロールしたいなと。 解法としては繰り返しを使うみたいなのですが、自分でちゃんと追ってみましょうか、と。 環境とお題 今回の環境は、こちら。…

TerraformリソースのLifecycleのカスタマイズを行う

これは、なにをしたくて書いたもの? TerraformリソースのLyfecycleのカスタマイズした時の動きを、1度自分でも確認しておきたいなということで。 TerraformのMeta Arguments Terraformのリソース定義には、Meta Argumentsと呼ばれる引数を含めることができ…

TerraformでRemote Stateを参照して、Data Sourceとして扱う

これは、なにをしたくて書いたもの? TerraformのRemote Stateを参照することで、Data Sourceとして扱えるらしいので、試してみることにしました。 Remote StateをData Sourceとして使う Remote Stateは、デフォルトではローカルに保存されるStateを、別のリ…

Terraformのgraphコマンドで、構成を可視化してみる

これは、なにをしたくて書いたもの? Terraformのリソースの依存関係を出力できないのかな?と思ったのですが、terraform graphコマンドでGraphvizのdot形式で出力可能な ようなので、1度試してみることにしました。 Command: graph - Terraform by HashiCor…

Terraformモジュールのインスタンスとリソースのスコープを確認したい

これは、なにをしたくて書いたもの? Terraformのモジュールというものを、この前初めて書いてみたのですが、同じリソース定義を別のモジュールに含めた時に、 どういう動きになるのかな?というのを確認してみたいと思いまして。 いろいろ、バリエーション…

TerraformのData Sourceを試す

これは、なにをしたくて書いたもの? TerraformのData Sourceを使ってみよう、ということで。 Data Source Terraformには、Data Sourceというものがあります。Data Sourceは、外部データを参照できる仕組みです。 Data Sources - Configuration Language - T…

Terraformのモジュールを書いてみる

これは、なにをしたくて書いたもの? Terraformのモジュールというものを、1度自分で書いてみようかな、と。 練習ですね。 Terraform Module Terraformのモジュールは、複数のリソースをまとめて抽象化したものです。 Creating Modules - Terraform by Hashi…

TerraformのStateをConsulで管理する

これは、なにをしたくて書いたもの? TerraformのStateについてちゃんとドキュメントを読んでいなかったので、1度確認しておこうということと、Stateをローカルファイル以外で 管理する方法もあるらしいので、そちらも見てみようかなということで。 今回は、…

TerraformでNode.js+PostgreSQLなアプリケーションをHerokuにデプロイする

これは、なにをしたくて書いたもの? Terraformの勉強にと、Herokuを使って、アプリケーションとデータベースをデプロイする超簡単な例を作って試してみようと。 お題 Herokuのフリープランで利用可能なPostgreSQLを使い、以下のサンプルとほぼ同等なアプリ…

TerraformでアプリケーションをHerokuにデプロイしてみる

これは、なにをしたくて書いたもの? Terraformの勉強がてら、どこか適当にリソースをデプロイ可能なProviderはないかな?と思っていたところ、HerokuのProviderが あったので、こちらで少し遊んでみようと。 Provider: Heroku - Terraform by HashiCorp お…

Ubuntu Linux 18.04 LTSにTerraformをインストールする

ちょっとTerraformが気になっているので、試しにとインストールして触ってみることにしました。 Terraform by HashiCorp Terraform? そもそも、Terraformとはなんでしょう? オフィシャルサイトによると、インフラをコードで定義し、リソースを作成したり変…