unity地形システム地形下凹_多様な環境を持つ地形


unity地形システム地形下凹
設定
私がこのテーマを選んだのは、最近この文章を見つけたからです.お勧めの方法です.Hashicorpはワークスペースを使用して異なる環境を制御することを推奨します.これは私の2019年2月/3月以来の提案とは違います.
1つ目の方法-ワークスペースを持つ単一の勘定科目
2019年の初め、私はTerraformをAWSプロジェクトに使用し始めました.私がやっているインフラストラクチャの基礎は、私が以前やっていたプロジェクト(Clojureにある)とよく似ていますが、このプロジェクトはbashスクリプトを大量に使用してELB環境の作成を処理しています.すべてのコンテンツにbashスクリプトを使用したくないので、苦しくて混乱しています.心が砕けます.そのため、Terraformを勉強して使うことにしました.Terraformは素晴らしいです.(完璧ではありません.小さな問題があちこちにあります).このプロジェクトにはAWSアカウントが1つしかありませんから.(詳細はわかりましたが)、複数の環境を単一の勘定科目に配置する方法を見つける必要があります.そのため、ワークスペースを使用しました.ワークスペースを使用する場合は、ファイルのセットを使用し、変更可能なデータ/変数に対して2つの選択があります.または、異なるtfvarファイルを使用して、各環境に1つずつ、パラメータとしてTerraform呼び出しに渡します.(例えば、terraform plan -var-file=env.dev.tfvars).
例えば、env.dev.tfvarsは、
retention_policy = 7
prod.env.tfvars
retention_policy = 365

私が使用するもう一つのオプションは、必要な値を持つマッピングを作成し、検索機能を使用して情報を取得することです.そのため、tfファイルのコードは次のようになります.
variable "workspace_to_retention_policy_map" {
  description = "The retention period of cloudwatch logs"
  type = map
  default = {
    dev     = 7
    staging = 7
    prod    = 365
  }
}

locals {
  retention_policy  = lookup(var.workspace_to_retention_policy_map, terraform.workspace, 7)
  # or even better if you don't need the default
  retention_policy2 = var.workspace_to_retention_policy_map[terraform.workspace]
}

私は実際に各環境の値を一緒に変更するのが好きなので、環境間の変化を簡単に見ることができますが、確かにファイルに多くの干渉が発生します.
その場合、複数の環境でワークスペースを使用することは推奨されません.terraform workspace selectがいつ実行されるか、またはCIのみで実行されることが望ましいかをよく知っておく必要があります.そのため、エラーは発生しません.
2つ目の方法-複数のアカウント、単一のワークスペース
私の現在のプロジェクトでは、異なる方法を使用しています.各環境にAWSアカウントがあります.同じワークスペース設定を使用することができたが、ステータスS 3を使用してAWSアカウントに格納されるため、状況は複雑になった(ソリューション、次の部分).
そのため、environmentsフォルダがあり、そして、各環境のフォルダ内(開発、テスト、生産、または使用するもの).各フォルダには同じファイル(変数ファイル、出力ファイル、メイン/設定ファイル)があります.すべての環境を同じように見せる必要があるからです.(または非常に似ている)ので、これらのファイルをシンボルリンクし、変更する必要があるデータにtfvarsファイルを追加できます(最初の方法で見たものと何の違いもありません).環境にのみ存在するインフラストラクチャを他のファイルに追加できます.このようなことがあります.
- environments
|- dev
|  |- Main.tf
|  |- variables.tf
|  |- outputs.tf
|  |- dev.env.tfvars
|- test
|  |- main.tf -> ../dev/main.tf
|  |- variables.tf -> ../dev/variables.tf
|  |- outputs.tf -> ../dev/outputs.tf
|  |- test.env.tfvars
|- prod
|  |- main.tf -> ../dev/main.tf
|  |- variables.tf -> ../dev/variables.tf
|  |- outputs.tf -> ../dev/outputs.tf
|  |- prod.env.tfvars
|  |- prod.unique.tf

ワークスペースとは異なり、ここで間違いを犯すのは非常に難しい.結局、Terraformコマンドを実行するには、正しいフォルダにナビゲートする必要があります.また、シンボルリンクは、注意すべきファイルの数をチェックし続けます(そうでなければ、この方法の大きな弊害になります).
3つ目の方法-複数のアカウント、複数のワークスペース
しかし、待ってください.-これは、複数のアカウントを持つワークスペースを使用できないことを意味しますか?はい、もちろんできません.上記の方法は,各勘定科目内の各勘定科目のTerraform状態を一定に保つという事実に基づいている.ただし、単一の集中位置に切り替えると問題がないため、複数の勘定科目でワークスペースを使用できます.Terraformはこのために、Artifactory、Consul、etcd v 2、etcd v 3、いくつかの「ランダム」http rest、swift、Postgres、および独自のTerraform Enterpriseを使用しています.
単一のs 3バックエンドでシステムの残りの部分とは異なるプロファイル(異なるアカウント)を使用できますか?はい、はい、バックエンドでは、残りの設定とは異なる証明書を使用できます.実際には、最近、複数のプロバイダがあることがわかりました.(同じ勘定科目の混合勘定科目または複数の勘定科目)を使用して、異なる別名を指定し、各リソースに使用するプロバイダを選択します.
ここでは、Azure Blobストレージなどの集中型ステータスストレージを使用して処理する非常に高速なコードを示します(主に「適切な」ストレージにアクセスしていないためですが、Codurance Azure遊園地にアクセスできます).
まずremote.tfファイルです.このファイルでは、すべてのワークスペースのステータスストレージの場所を示します.
terraform {
  backend "azurerm" {
    resource_group_name  = "Jorge-Terraform-Test"
    storage_account_name = "jorgeterraformtest"
    container_name       = "terraformstate"
    key                  = "terraform.tfstate"
  }
}
az loginプロセスを使用してテストしています.しかし、実際の製品に基づいて、本体を使用したいと思っています.
次にvariables.tfファイルです.このクイックテストに必要な一意の変数が含まれています.
variable "profile" {
  type=string
}

次に、プライマリ・ファイル:resource.tf
provider "aws" {
  version = "~> 2.0"
  region  = "us-east-1"
  profile = var.profile
}

# Create a VPC
resource "aws_vpc" "example" {
  cidr_block = "172.35.0.0/16"

  tags = {
    Name = "jorge's test"
  }
}

最後に、このテストについて、2つの個別のtfvarsファイルを使用することを選択しました.dev.env.tfvars
profile="codurance-playground"
prod.env.tfvars
profile="codurance"

Terraformはこのプロファイルを使用して私のAWS証明書ファイルをチェックします.
最後に、このワークスペース設定をスムーズに行うには、第1部で必要な同じコマンドを使用します.しかし、私は単一の集中状態の場所を使用しているため、個別のアカウントを処理することができます.
何を選ぶ
やれやれ......状況次第だ.どのような区切りが必要ですか?モジュールを使用している場合は、Terraformがモジュールの条件設定を提供していないように見えるため、ワークスペースの処理が難しくなります.ただし、すべての環境で同じ設定をしている場合は、ワークスペースが少しきれいになるようです.
翻訳:https://www.javacodegeeks.com/2020/04/terraform-with-multiple-environments.html
unity地形システム地形下凹