初心者のための地形変数型


Torraform変数型は、あなたのクラウド・アーキテクチャを構成するためのキーであり、理解するコードとしてのインフラストラクチャの中心的な原則です.
インマイprevious post I went through the process of how to set up Terraform on Mac, このポストは、パート2です.私は、どのようにterraform変数が働くかについて議論します.
最後のポストは、terraformで基本的なVPCをセットアップする方法を示しました、このポストは変数を作成して、それらの変数に基づいてVPCの中で構成を定義する方法を示します.

terraform変数型ステップ1 :変数を作成します。tfファイル


あなたのフォルダのルートであなたの他の.tfファイルは、作成変数です.TFは以下のイメージで好きです、そして、下のコードをそれにコピーしてください.

以前のチュートリアルからのルートフォルダーのスクリーンショット.tfファイル.
を返します.tf file以下の変数型を入力します.

文字列変数


文字列変数を使用して、以下の例では一意のUnicodeの設定/識別子/名前を定義できます.
// STRING VARIABLE
variable "cidr_block" { // name of the variable
  type = string // type of the variable (in the case string)
  default = "10.0.0.0/16" // value of the string variable, in this case the cidr block details
}

変数


番号変数は、内部/外部ポート番号などの全体または小数番号を定義するために使用することができます.以下の例はこの変数を使用するための強力なusecaseではありませんが、デモンストレーションとして動作します.
// NUMBER VARIABLE
variable "projectDuration" { // name of the variable
  type = number // type of the variable (in this case number)
  default = 28 // value of the number
}

ブール変数


ブール変数は、リソース内で特定の機能が有効かどうかを判断するために使用されます.
// BOOLEAN VARIABLE
variable "enabled" { // name of the variable
  default = true // value of the variable
}

リスト変数


リスト変数は、可用性ゾーンおよびポートのような事項のための異なる型構成を定義するために用いることができる.この場合、さまざまなタイプのInstanceRank tenancyをオプションとして概説します.
// LIST VARIABLE (ARRAY)
variable "instance_tenancy" { // name of the variable
  type = list(string) // type of the variable, set as a list that accepts only string data
  default = ["default", "dedicated", "host"] // string values defined within the list
}

マップ変数


マップ変数は、キー値パリでリンクされた情報を定義するときに便利です.以下はこれの良い例ではありませんが、マップ変数の動作を示します.
// MAP VARIABLE (key value pairs)
variable "assign_generated_ipv6_cidr_block" { // name of the variable
  type = map // type of the variable, that accepts string keys and string values 
  default = {
    "False" = "false"
    "True" = "true"
  }
}

タプル変数


タプル変数は、それを設定するのに必要なパラメータを持つリソースを定義するときに便利です.以下はこれの良い例ではありませんが、タプル変数の動作を示します.
// TUPLE VARIABLE
variable "launchDate" { // name of the variable
  type = tuple([number, string]) // type of the variable, a list that accepts two values, the first being a number and the second being a string 
  default = [4, "September"]
}

オブジェクト変数


タプル変数に似たオブジェクト変数は、コンフィギュレーションを持つリソースを定義するのにも便利です.以下はこれの良い例ではありませんが、オブジェクト変数の動作を示します.
// OBJECT VARIABLE
variable "projectArchitecture" { // name of the variable
  type = object({style = string, resourceNumber = number}) // type of the variable, an object that is expecting a string variable called 'style' and a number variable called 'resourceNumber'
  default = {
    style = "Serverless"
    resourceNumber = 7
  }
}

入力変数


入力変数は、リソースの名前を定義するなど、実行時にリソース値を定義するときに便利です.
// INPUT VARIABLE
variable "inputname" { // name of the variable
  type = string // type of the input variable, which will be string stype
  description = "Set the name of the VPC" // set the description message that appears as a prompt for when you type an input as the variables value
}

出力変数


出力変数は、それがterraformによって作られたならば、リソースの値を記録するのに最適です.
// OUTPUT VARIABLE
output "vpcid" { // name of the variable
  value = aws_vpc.myfirstvpc.id // the value that you'd like to output once the resource is created
}

// OUTPUT VARIABLE
output "vpcarn" { // name of the variable
  value = aws_vpc.myfirstvpc.arn // the value that you'd like to output once the resource is created
}
変数全体を入れました.下記のtfファイルには、terraform内で変数を定義できるさまざまな方法があります.

変数。TF


// STRING VARIABLE
variable "cidr_block" { // name of the variable
  type = string // type of the variable (in the case string)
  default = "10.0.0.0/16" // value of the string variable, in this case the cidr block details
}

// NUMBER VARIABLE
variable "projectDuration" { // name of the variable
  type = number // type of the variable (in this case number)
  default = 28 // value of the number
}

// BOOLEAN VARIABLE
variable "enabled" { // name of the variable
  default = true // value of the variable
}

// LIST VARIABLE (ARRAY)
variable "instance_tenancy" { // name of the variable
  type = list(string) // type of the variable, set as a list that accepts only string data
  default = ["default", "dedicated", "host"] // string values defined within the list
}

// MAP VARIABLE (key value pairs)
variable "assign_generated_ipv6_cidr_block" { // name of the variable
  type = map // type of the variable, that accepts string keys and string values 
  default = {
    "False" = "false"
    "True" = "true"
  }
}

// TUPLE VARIABLE
variable "launchDate" { // name of the variable
  type = tuple([number, string]) // type of the variable, a list that accepts two values, the first being a number and the second being a string 
  default = [4, "September"]
}

// OBJECT VARIABLE
variable "projectArchitecture" { // name of the variable
  type = object({style = string, resourceNumber = number}) // type of the variable, an object that is expecting a string variable called 'style' and a number variable called 'resourceNumber'
  default = {
    style = "Serverless"
    resourceNumber = 7
  }
}

// INPUT VARIABLE
variable "inputname" { // name of the variable
  type = string // type of the input variable, which will be string stype
  description = "Set the name of the VPC" // set the description message that appears as a prompt for when you type an input as the variables value
}

// OUTPUT VARIABLE
output "vpcid" { // name of the variable
  value = aws_vpc.myfirstvpc.id // the value that you'd like to output once the resource is created
}

// OUTPUT VARIABLE
output "vpcarn" { // name of the variable
  value = aws_vpc.myfirstvpc.arn // the value that you'd like to output once the resource is created
}

terraform変数型ステップ2 :メインを更新します。変数からのデータによるtf。TF


メインを開きます.tfと下のコードをコピーします.これはVPCリソースを変数で定義した詳細を更新します.tf.

メイン.TF


// VPC RESOURCE
resource "aws_vpc" "myfirstvpc" { // title of resource
  cidr_block = var.cidr_block // accessing string variable data
  enable_dns_support = var.enabled // accessing string boolean data
  instance_tenancy = var.instance_tenancy[0] // accessing list variable data
  assign_generated_ipv6_cidr_block = var.assign_generated_ipv6_cidr_block["False"] // accessing map variable data
  tags = {
    Name = var.inputname // accessing input variable data
    ProjectDurationInWeeks = var.projectDuration // accessing number variable data
    LaunchDay = var.launchDate[0] // accessing tuple variable data
    LaunchMonth = var.launchDate[1] // accessing tuple variable data
    ArchitectureType = var.projectArchitecture["style"] // accessing object variable data
    NumberOfResources = var.projectArchitecture["resourceNumber"] // accessing tuple variable data
  }
}

terraform変数型ステップ3 :地形の作成


ターミナルウィンドウで、このコマンドをあなたのterraformファイルを含むフォルダに実行します
terraform apply -auto-approve
プロンプトが'値を入力すると、'表示されます.

入力した値とともに値を入力するプロンプトを示すターミナルウィンドウ
リソースが作成されると、定義された2つの出力変数がターミナルウィンドウに記録されます.

terraformファイルが実行され、リソースが作成され、2つの出力変数の値が記録されます
AWSでは、VPCの設定を確認し、VPCの設定があなたが書いたterraformファイルと一致するならば、リソースが作成されたことを確認します.


VPCリソースを破壊したら、以下のコマンドを実行し、終了したいVPCリソースの名前を入力します(この場合、"test "です).
terraform destroy -auto-approve

「テスト」としてタグ付けされたVPCリソースの成功した削除のスクリーンショット.

概要


このポストでは、いくつかの異なる方法で変数を設定する方法を示しました.もっと知りたいなら、チェックアウトしてTerraform’s official documentation