terraformの環境を扱う簡単なトリック
2862 ワード
それで、短いポストのために、私はterraformに入る良い習慣を共有したかったです.より具体的には、複数の環境の設定と展開を処理する簡単な方法であり、あなたのterraformスクリプトで管理することが容易になります.
これは、Terraformと長い間、新しい環境を構築するためにそれを活用してすぐに値を参照してくださいとは動作しませんが、それは決して私はどのように多くの人々は私の話を驚かせることは失敗しないと言われている人は、その再利用可能なテンプレートをクラフトしないでください.これを行うには多くの方法がありますが、私は私が使用する練習を共有したい.
アイデアは、このパターンを活用して起動します.私のプロジェクトには以下のキーファイルが含まれています.メイン.このファイルはプロバイダー情報を含み、展開中に使用するサービスプリンシパル(1を使用している場合)をマップします. 変数.tf :このファイルには、定義についての記述を持つ、私のソリューションで利用されている変数の一覧が含まれます. "main . tf "ファイルはかなり基本的です.
私の変数ファイルには次のようなものがあります.
注意:通常、あなたは「*. tfvars」をgitignoreに追加するよう勧めます.これは、構成がソースコントロールにチェックされるのを防ぎます.
もう一つのステップは比較的簡単に自動化された展開です.
今、これは手動のアプローチの一種です、理想的に、あなたは必要な配備変数にアクセスするためにkeyvaultまたはvaultを活用します.
これは、Terraformと長い間、新しい環境を構築するためにそれを活用してすぐに値を参照してくださいとは動作しませんが、それは決して私はどのように多くの人々は私の話を驚かせることは失敗しないと言われている人は、その再利用可能なテンプレートをクラフトしないでください.これを行うには多くの方法がありますが、私は私が使用する練習を共有したい.
アイデアは、このパターンを活用して起動します.私のプロジェクトには以下のキーファイルが含まれています.
provider "azurerm" { subscription\_id = var.subscription\_id version = "~> 2.1.0" client\_id = var.client\_id client\_secret = var.client\_secret tenant\_id = var.tenant\_id features {} }
上記のことは、subscriptionRange id、ClientRange ID、ClientCentrSecret、およびTenantRange IDの変数に対して既に配線されていることに注意してください.私の変数ファイルには次のようなものがあります.
variable "subscription\_id" { description = "The subscription being deployed." } variable "client\_id" { description = "The client id of the service prinicpal" } variable "client\_secret" { description = "The client secret for the service prinicpal" } variable "tenant\_id" { description = "The client secret for the service prinicpal" }
では、個々の環境に対して別々の". tfvars "ファイルを持つことができます.primarylocation = "..." secondarylocation = "..." subscription\_id = "..." client\_id = "..." client\_secret = "..." tenant\_id = "..."
ここからterraformで環境を作成するプロセスは以下のように簡単です.terraform apply -var-file {EnvironmentName}.tfvars
そして、新しい環境のために、私がしなければならないすべては、新しいものをつくることです.TFVARSファイルは、その環境の設定を格納します.これにより、ローカル環境の設定をローカルに管理できます.注意:通常、あなたは「*. tfvars」をgitignoreに追加するよう勧めます.これは、構成がソースコントロールにチェックされるのを防ぎます.
もう一つのステップは比較的簡単に自動化された展開です.
- script: | touch variables.tfvars echo -e "primarylocation = \""$PRIMARYLOCATION"\"" >> variables.tfvars echo -e "secondarylocation = \""$SECONDARYLOCATION"\"" >> variables.tfvars echo -e "subscription\_id = \""$SUBSCRIPTION\_ID"\"" >> variables.tfvars echo -e "client\_id = \""$SP\_APPLICATIONID"\"" >> variables.tfvars echo -e "tenant\_id = \""$SP\_TENANTID"\"" >> variables.tfvars echo -e "client\_secret = \""$SP\_CLIENTSECRET"\"" >> variables.tfvars displayName: 'Create variables Tfvars'
上記のスクリプトは、個々の環境に対してビルド変数を受け取り、その環境のために適切な". tfvars "ファイルを構築します.今、これは手動のアプローチの一種です、理想的に、あなたは必要な配備変数にアクセスするためにkeyvaultまたはvaultを活用します.
Reference
この問題について(terraformの環境を扱う簡単なトリック), 我々は、より多くの情報をここで見つけました https://dev.to/documentednerd/a-simple-trick-to-handling-environments-in-terraform-37gpテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol