Terraform 弌室鹿
峻さん、こんにちは。室宝蝕kグル`プの稼-看噛温敬温稼です。
恷除、額看顎意顎恢艶でマ`モットの強鮫が送れてきてKされています。
云籾です。
念指までの芝並で、意艶姻姻温韓看姻馨の児云議なことをお三ししました。書晩は意艶姻姻温韓看姻馨で桟廠を更廏する縞によく聞いそうな宴旋な弌室を府初します。
朕肝
v方
弌室鹿に秘る念にについてお三しさせてください。意艶姻姻温韓看姻馨には謹くの怏みzみv方が喘吭されています。參和は巷塀サイトに芝墮されている箭です。maxv方は鞭け函った、琳个ら、恷寄、箸覆詈、魴吉瓦靴泙后
> max(5, 12, 9)
12意艶姻姻温韓看姻馨のv方は駅ず駅勣なものではないのですが、意艶姻姻温韓看姻馨でちょっとしたことをしたい魁栽にお弊三になりますので、えといて鱒はありません。參和に府初する弌室ではv方を旋喘したものになります。
弌室鹿
逮壊看稼ファイルを歌孚する圭隈
h廠の秤鵑覆匹鬟路`ドコ`ディングせずに、jsonファイルなどに俳り竃したいことはあると房います。ここではTerraformで逮壊看稼ファイルを歌孚する圭隈をB初します。ファイルの坪否を函誼するにはv方を旋喘します。韓庄鉛艶v方はファイルの坪否を猟忖双として卦抜するため、そのままでは逮壊看稼の嶄附をQえません。逮壊看稼侘塀の猟忖双から看恢逮艶界岳に篁擦垢襪砲呂箸いv方を旋喘します。
locals {
# sample.jsonの坪否 ★ {"hello": "world"}
sample = jsondecode(file("${path.module}/sample.json"))
}
output "console" {
value = local.sample.hello # コンソ`ルに"world"が竃薦される
}モジュ`ルの哈方をチェックする圭隈
哈方を鞭け函るには厩温姻庄温恢鉛艶ブロックを旋喘します。厩温姻庄温恢鉛艶ブロックでは鞭け函る、緑唯┳С抂庄稼乙や鰻顎馨恢艶姻などを峺協することは竃栖ます。侏に紗えて、箭えば蒙協の、世韻鯤椶曳,蝓△修賻塒發、局されたらエラ`としたい魁栽はvalidationを聞喘します。
variable "az_type" {
description = "Availability Zone のN"
type = string
validation {
condition = contains(["ap-northeast-1a", "ap-northeast-1c", "ap-northeast-1d"], var.az_type)
error_message = "Allowed values for az_type are \"ap-northeast-1a\", \"ap-northeast-1c\", or \"ap-northeast-1d\""
}
}貧芝は粥安皆の粥舘┘▲戰ぅ薀咼螢謄`ゾ`ンの嶽窃を鞭け函る厩温姻庄温恢鉛艶です。叫奨リ`ジョンの粥舘にはap-northeast-1a、ap-northeast-1c、ap-northeast-1dの3つがあります。なので、哈方として鞭け函る粥舘の嶽窃は貧芝3つに浙┐靴董△修賻塒發魯┘薊`としています。
validation.conditionには、鞭け函った、編^を佩います。trueの魁栽は或悪で、falseの魁栽は鰻赫としてコンソ`ルにvalidation.error_messageの坪否を燕幣してI尖を唯峭します。
validation.conditionにて、というv方が聞われています。及2哈方の、、及1哈方のリストに贋壓する魁栽はtrue、贋壓しない魁栽はfalseを卦抜します。
モジュ`ルの哈方塘双をチェックする圭隈
では、その哈方が塘双の魁栽はどうやってチェックするのでしょうか。基えは酒gで韓看姻猟で指せば竃栖ます。
variable "az_type" {
description = "Availability Zone のN"
type = list(string)
validation {
condition = alltrue([
for az in var.az_type : contains(["ap-northeast-1a", "ap-northeast-1c", "ap-northeast-1d"], az)
])
error_message = "Allowed values for az_type are \"ap-northeast-1a\", \"ap-northeast-1c\", or \"ap-northeast-1d\""
}
}韓看姻猟で鞭け函った塘双を指し、勣殆ごとに界看稼岳温庄稼壊v方でチェック、恢看看鉛艶温稼の塘双に篁擦靴泙后iv方は、哈方の塘双勣殆がすべて岳姻顎艶の魁栽に岳姻顎艶を卦抜します。1つでも韓温鉛壊艶が根まれている魁栽は韓温鉛壊艶を卦抜します。
鹸方リソ`スの蒙協の、鯏篩个砲泙箸瓩觀酬
韓看姻喝艶温界鞄などにより、リソ`スを鹸方恬撹することが竃栖ます。その恬撹された鹸方のリソ`スから、蒙協の、鯏篩个箸靴独ゝ辰靴燭ぅ羽`スがあります。
箭えばAWSでRDSDBをBするH、塘崔枠のSubnetを峺協するためにDB Subnet Groupというリソ`スを恬撹します。RDSは}方のSubnetを睡いで塘崔☆することが竃栖るため、SubnetのIDを塘双で峺協します。
☆屎_には、RDSを庇L晒するためにAZを睡いで塘崔する、が屎しいです。AZごとにPrivate Subnetを恬撹する駅勣があり、|奨リ`ジョンであれば恷寄3つのSubnetを恬撹することになります。
resource "aws_db_subnet_group" "database_sg_group" {
name = "db-subnet-group"
# subnet_ids = [aws_subnet.private["1a"].id, aws_subnet.private["1c"].id, aws_subnet.private["1d"].id]
subnet_ids = [for subnet in aws_subnet.private : subnet.id]
}resource "aws_db_subnet_group"のsubnet_idsで、恬撹した}方のリソ`スをfor猟でI尖して、Subnet IDの塘双にQしています。コメント蛍はfor猟を旋喘しなかった栽のやり圭です。for猟を旋喘した栽と曳べ、峰坪否が庇Lであり、subnetの方の筝に樋い峰となっています。蒙eな尖喇がない泙蠅for猟を旋喘した圭がいいでしょう。
おわりに
いかがでしたでしょうか。意艶姻姻温韓看姻馨の弌室鹿を府初しました。弌室と冱っても、g縞に意艶姻姻温韓看姻馨で桟廠を更廏しようとすると、よく聞うかと房います。
箭えばAWS IAMではポリシ`をJSON侘塀で峺協しますので、ポリシ`をtfファイルにハ`ドコ`ディングするのではなくjsonファイルで砿尖するのも措いでしょう。Object侏からList侏へのQにfor猟を旋喘する圭隈についても、辛i來が貧がるだけでなく、云桑h廠や編^h廠などの`いにも悲にIできます。
ではまた。
