เดŸเต†เดฑเดพเดซเต‹เด‚ เด…เดชเด•เดŸเด™เตเด™เตพ

เดŸเต†เดฑเดพเดซเต‹เด‚ เด…เดชเด•เดŸเด™เตเด™เตพ
เดฒเต‚เดชเตเดชเตเด•เดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดต, เด‡เดซเต เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเตโ€Œเดฎเต†เดจเตเดฑเตเด•เดณเตเด‚ เดกเดฟเดชเตเดฒเต‹เดฏเตโ€Œเดฎเต†เดจเตเดฑเต เดŸเต†เด•เตโ€Œเดจเดฟเด•เตเด•เตเด•เดณเตเด‚, เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเดจเต† เดชเตŠเดคเตเดตเดพเดฏเดฟ เดฌเดพเดงเดฟเด•เตเด•เตเดจเตเดจ เด•เต‚เดŸเตเดคเตฝ เดชเตŠเดคเตเดตเดพเดฏ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเตเด‚ เด‰เตพเดชเตเดชเต†เดŸเต†เดฏเตเดณเตเดณ เดšเดฟเดฒ เดชเต‹เดฐเดพเดฏเตเดฎเด•เตพ เดจเดฎเตเด•เตเด•เต เดนเตˆเดฒเตˆเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚:

  • เดŽเดฃเตเดฃเดคเตเดคเดฟเดจเตเด‚ for_each เดชเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพเด•เตเด•เตเด‚ เดชเดฐเดฟเดฎเดฟเดคเดฟเด•เดณเตเดฃเตเดŸเต;
  • เดชเต‚เดœเตเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดตเดฟเดจเตเดฏเดพเดธเด™เตเด™เตพ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเตเด•;
  • เด’เดฐเต เดจเดฒเตเดฒ เดชเดฆเตเดงเดคเดฟ เดชเต‹เดฒเตเด‚ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเดพเด‚;
  • เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเดจเต เด…เดคเดฟเดจเตเดฑเต† เด…เดชเด•เดŸเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เดพเด‚;
  • เดฎเดพเดฑเตเดฑเดฟเดตเต†เดšเตเดš เดฏเต‹เดœเดฟเดชเตเดชเต เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณเดคเดพเดฃเต... เดฎเดพเดฑเตเดฑเดฟเดตเดฏเตเด•เตเด•เดฒเดฟเดจเตŠเดชเตเดชเด‚.

เดŽเดฃเตเดฃเดคเตเดคเดฟเดจเตเด‚ for_each เดชเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพเด•เตเด•เตเด‚ เดชเดฐเดฟเดฎเดฟเดคเดฟเด•เดณเตเดฃเตเดŸเต

เดˆ เด…เดงเตเดฏเดพเดฏเดคเตเดคเดฟเดฒเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดฒเต‚เดชเตเดชเตเด•เดณเดฟเดฒเตเด‚ เดธเต‹เดชเดพเดงเดฟเด• เดฒเต‹เดœเดฟเด•เตเด•เดฟเดฒเตเดฎเตเดณเตเดณ เด•เต—เดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด‚ for_each เดŽเด•เตเดธเตเดชเตเดฐเดทเดจเตเด‚ เดตเดฟเดชเตเดฒเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด…เดตเตผ เดจเดจเตเดจเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เด…เดฑเดฟเดžเตเดžเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸ เดฐเดฃเตเดŸเต เดชเตเดฐเดงเดพเดจ เดชเดฐเดฟเดฎเดฟเดคเดฟเด•เดณเตเดฃเตเดŸเต.

  • Count, for_each เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เต เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตŠเดจเตเดจเตเด‚ เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.
  • เดฎเตŠเดกเตเดฏเต‚เตพ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ count, for_each เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.

เด•เต—เดฃเตเดŸเต, for_each เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เต เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตŠเดจเตเดจเตเด‚ เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ EC2 เดธเต†เตผเดตเดฑเตเด•เตพ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต†เดจเตเดจเตเด‚ เดšเดฟเดฒ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต ASG เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเดฟเดฒเตเดฒเต†เดจเตเดจเตเด‚ เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด•. เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เต‹เดกเต เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚:

resource "aws_instance" "example_1" {
   count             = 3
   ami                = "ami-0c55b159cbfafe1f0"
   instance_type = "t2.micro"
}

เด…เดต เด“เดฐเต‹เดจเตเดจเดพเดฏเดฟ เดจเต‹เด•เตเด•เดพเด‚.

เด•เต—เดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดฎเต‚เดฒเตเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดˆ เด•เต‹เดกเต เดชเตเดฐเดถเตเดจเด™เตเด™เดณเดฟเดฒเตเดฒเดพเดคเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚: เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด• เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเต เดฎเต‚เดจเตเดจเต EC2 เดธเต†เตผเดตเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚. เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดจเดฟเดฒเดตเดฟเดฒเต† AWS เดฎเต‡เด–เดฒเดฏเดฟเตฝ เด“เดฐเต‹ เดฒเดญเตเดฏเดค เดฎเต‡เด–เดฒเดฏเดฟเดฒเตเด‚ (AZ) เด’เดฐเต เดธเต†เตผเดตเตผ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเตเด‚? เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เต‹เดกเต aws_availability_zones เดกเดพเดฑเตเดฑเดพ เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเต‹เดฃเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดฏเตเด‚, เดคเตเดŸเตผเดจเตเดจเต เด“เดฐเต‹เดจเตเดจเดฟเดฒเตเด‚ เดฒเต‚เดชเตเดชเต เดšเต†เดฏเตโ€Œเดคเต เด…เดคเดฟเตฝ เด•เต—เดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด‚ เด…เดฑเต‡ เดธเต‚เดšเดฟเด• เด†เด•เตโ€Œเดธเดธเตเดธเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต EC2 เดธเต†เตผเดตเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเด‚:

resource "aws_instance" "example_2" {
   count                   = length(data.aws_availability_zones.all.names)
   availability_zone   = data.aws_availability_zones.all.names[count.index]
   ami                     = "ami-0c55b159cbfafe1f0"
   instance_type       = "t2.micro"
}

data "aws_availability_zones" "all" {}

เดˆ เด•เต‹เดกเตเด‚ เดจเดจเตเดจเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚, เด•เดพเดฐเดฃเด‚ เด•เต—เดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดฟเดจเต เดฏเดพเดคเตŠเดฐเต เดชเตเดฐเดถเตเดจเดตเตเดฎเดฟเดฒเตเดฒเดพเดคเต† เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเต† เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸ เดธเต†เตผเดตเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดšเดฟเดฒ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเดŸเต† เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ เดŽเดจเตเดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเด‚? เด‡เดคเต เดคเต†เดณเดฟเดฏเดฟเด•เตเด•เดพเตป, เดเดฑเตเดฑเดตเตเด‚ เดŽเดณเตเดชเตเดชเดฎเตเดณเตเดณ เดฎเดพเตผเด—เตเด—เด‚ random_integer เดฑเดฟเดธเต‹เดดเตเดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต, เด…เดคเต เดชเต‡เดฐเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดฒเต†, เด’เดฐเต เด•เตเดฐเดฎเดฐเดนเดฟเดค เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏ เดจเตฝเด•เตเดจเตเดจเต:

resource "random_integer" "num_instances" {
  min = 1
  max = 3
}

เดˆ เด•เต‹เดกเต 1-เดจเตเด‚ 3-เดจเตเด‚ เด‡เดŸเดฏเดฟเตฝ เด’เดฐเต เดฑเดพเตปเดกเด‚ เดจเดฎเตเดชเตผ เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. aws_instance เดฑเดฟเดธเต‹เดดเตเดธเดฟเดจเตเดฑเต† เด•เต—เดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดฟเตฝ เดˆ เดฑเดฟเดธเต‹เดดเตเดธเดฟเดจเตเดฑเต† เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเดšเตเดšเดพเตฝ เดŽเดจเตเดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดจเต‹เด•เตเด•เดพเด‚:

resource "aws_instance" "example_3" {
   count             = random_integer.num_instances.result
   ami                = "ami-0c55b159cbfafe1f0"
   instance_type = "t2.micro"
}

เดˆ เด•เต‹เดกเดฟเตฝ เดจเดฟเด™เตเด™เตพ เดŸเต†เดฑเดพเดซเต‹เด‚ เดชเตเดฒเดพเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดฟเดถเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚:

Error: Invalid count argument

   on main.tf line 30, in resource "aws_instance" "example_3":
   30: count = random_integer.num_instances.result

The "count" value depends on resource attributes that cannot be determined until apply, so Terraform cannot predict how many instances will be created. To work around this, use the -target argument to first apply only the resources that the count depends on.

เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเต‹ เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฟเด•เตเด•เตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เด†เดธเต‚เดคเตเดฐเดฃ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เด“เดฐเต‹เดจเตเดจเดฟเดจเตเด‚ เดŽเดฃเตเดฃเดตเตเด‚ เด•เดฃเด•เตเด•เตเด•เต‚เดŸเตเดŸเดฒเตเด‚ เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚, count, for_each เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เต เดฒเดฟเดฑเตเดฑเดฑเดฒเตเด•เตพ, เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ, เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ, เด•เต‚เดŸเดพเดคเต† เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เดฒเดฟเดธเตเดฑเตเดฑเตเด•เตพ (เดทเต†เดกเตเดฏเต‚เดณเดฟเด‚เด—เต เดธเดฎเดฏเดคเตเดคเต เด…เดตเดฏเตเดŸเต† เดฆเตˆเตผเด˜เตเดฏเด‚ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดฟเดŸเดคเตเดคเต‹เดณเด‚) เดŽเดจเตเดจเดฟเดตเดฏเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เดŽเดจเตเดจเดพเตฝ เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดค เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฒเตเดฒ.

เดฎเตŠเดกเตเดฏเต‚เตพ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ count, for_each เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ

เดŽเดชเตเดชเต‹เดดเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฎเตŠเดกเตเดฏเต‚เตพ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด•เต—เดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดšเต‡เตผเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เดชเตเดฐเดฒเต‹เดญเดฟเดชเตเดชเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚:

module "count_example" {
     source = "../../../../modules/services/webserver-cluster"

     count = 3

     cluster_name = "terraform-up-and-running-example"
     server_port = 8080
     instance_type = "t2.micro"
}

เดตเต†เดฌเตโ€Œเดธเต†เตผเดตเตผ-เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดฑเดฟเดธเต‹เดดเตโ€Œเดธเดฟเดจเตเดฑเต† เดฎเต‚เดจเตเดจเต เดชเด•เตผเดชเตเดชเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด’เดฐเต เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดจเตเดณเตเดณเดฟเตฝ เด•เต—เดฃเตเดŸเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดˆ เด•เต‹เดกเต เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดšเดฟเดฒ เดฌเต‚เดณเดฟเดฏเตป เด…เดตเดธเตเดฅเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เด’เดฐเต เดฎเตŠเดกเตเดฏเต‚เตพ เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด…เดคเดฟเดจเตเดฑเต† เด•เต—เดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ 0 เด†เดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚. เด‡เดคเต เดจเตเดฏเดพเดฏเดฎเดพเดฏ เด•เต‹เดกเต เดชเต‹เดฒเต† เดคเต‹เดจเตเดจเดพเด‚, เดชเด•เตเดทเต‡ เดŸเต†เดฑเดพเดซเต‹เด‚ เดชเตเดฒเดพเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดˆ เดชเดฟเดถเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚:

Error: Reserved argument name in module block

   on main.tf line 13, in module "count_example":
   13: count = 3

The name "count" is reserved for use in a future version of Terraform.

เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, Terraform 0.12.6 เดชเต‹เดฒเต†, เด’เดฐเต เดฎเตŠเดกเตเดฏเต‚เตพ เดฑเดฟเดธเต‹เดดเตโ€Œเดธเดฟเตฝ เด•เต—เดฃเตเดŸเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ for_each เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. Terraform 0.12 เดฑเดฟเดฒเต€เดธเต เด•เตเดฑเดฟเดชเตเดชเตเด•เตพ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต (http://bit.ly/3257bv4), HashiCorp เดญเดพเดตเดฟเดฏเดฟเตฝ เดˆ เด•เดดเดฟเดตเต เดšเต‡เตผเด•เตเด•เดพเตป เดชเดฆเตเดงเดคเดฟเดฏเดฟเดŸเตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เดˆ เดชเตเดธเตเดคเด•เด‚ เดตเดพเดฏเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเต เด‡เดคเดฟเดจเด•เด‚ เดฒเดญเตเดฏเดฎเดพเดฏเต‡เด•เตเด•เดพเด‚. เด‰เดฑเดชเตเดชเดพเดฏเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป, Terraform changelog เด‡เดตเดฟเดŸเต† เดตเดพเดฏเดฟเด•เตเด•เตเด•.

เดธเต€เดฑเต‹ เดกเตŒเตบเดŸเตˆเด‚ เดตเดฟเดจเตเดฏเดพเดธเด™เตเด™เดณเตเดŸเต† เดชเดฐเดฟเดฎเดฟเดคเดฟเด•เตพ

ASG-เดฏเตเดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเดšเตเดšเต create_before_destroy เดฌเตเดฒเต‹เด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดธเต€เดฑเต‹-เดกเต—เตบเดŸเตˆเด‚ เดตเดฟเดจเตเดฏเดพเดธเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเดฟเด•เดšเตเดš เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฃเต, เด’เดฐเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เด’เดดเดฟเด•เต†: เด“เดŸเตเดŸเต‹เดธเตโ€Œเด•เต‡เดฒเดฟเด‚เด—เต เดจเดฟเดฏเดฎเด™เตเด™เตพ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฑเดžเตเดžเดพเตฝ, เด‡เดคเต เดŽเดฒเตเดฒเดพ เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดฒเตเด‚ ASG เดตเดฒเตเดชเตเดชเด‚ min_size เด†เดฏเดฟ เดชเตเดจเดƒเดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดธเต†เตผเดตเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพ เด“เดŸเตเดŸเต‹เดธเตโ€Œเด•เต‡เดฒเดฟเด‚เด—เต เดจเดฟเดฏเดฎเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เด‡เดคเต เด’เดฐเต เดชเตเดฐเดถเตเดจเดฎเดพเด•เดพเด‚.

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเต†เดฌเตเดธเต†เตผเดตเตผ-เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดฎเตŠเดกเตเดฏเต‚เดณเดฟเตฝ เด’เดฐเต เดœเต‹เดŸเดฟ aws_autoscaling_schedule เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดฐเดพเดตเดฟเดฒเต† 9 เดฎเดฃเดฟเด•เตเด•เต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดธเต†เตผเดตเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดฐเดฃเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดคเตเดคเดพเดฏเดฟ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพ 11 เดฎเดฃเดฟเด•เตเด•เต เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดพเตฝ, เดชเตเดคเดฟเดฏ ASG เดชเดคเตเดคเต เดธเต†เตผเดตเดฑเตเด•เดณเต‡เด•เตเด•เดพเตพ เดฐเดฃเตเดŸเต เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฌเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด‚, เด…เดŸเตเดคเตเดค เดฆเดฟเดตเดธเด‚ เดฐเดพเดตเดฟเดฒเต† 9 เดฎเดฃเดฟ เดตเดฐเต† เด…เด™เตเด™เดจเต† เดคเดจเตเดจเต† เดคเตเดŸเดฐเตเด‚.

เดˆ เดชเดฐเดฟเดฎเดฟเดคเดฟ เดชเดฒ เดคเดฐเดคเตเดคเดฟเตฝ เดฎเดฑเดฟเด•เดŸเด•เตเด•เดพเด‚.

  • aws_autoscaling_schedule-เดฒเต† เด†เดตเตผเดคเตเดคเดจ เดชเดฐเดพเดฎเต€เดฑเตเดฑเตผ 0 9 * * * (โ€œเดฐเดพเดตเดฟเดฒเต† 9 เดฎเดฃเดฟเด•เตเด•เต เด“เดŸเตเด•โ€) เดŽเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต 0-59 9-17 * * * (โ€œเด“เดฐเต‹ เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเตเด‚ เดฐเดพเดตเดฟเดฒเต† 9 เดฎเตเดคเตฝ เดตเตˆเด•เตเดจเตเดจเต‡เดฐเด‚ 5 เดตเดฐเต† เด“เดŸเตเด•โ€) เดŽเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด•. ASG-เดจเต เด‡เดคเดฟเดจเด•เด‚ เดชเดคเตเดคเต เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดˆ เด“เดŸเตเดŸเต‹เดธเตโ€Œเด•เต‡เดฒเดฟเด‚เด—เต เดฑเต‚เตพ เดตเต€เดฃเตเดŸเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดจเตเดจเตเด‚ เดฎเดพเดฑเตเดฑเดฟเดฒเตเดฒ, เด…เดคเดพเดฃเต เดžเด™เตเด™เตพเด•เตเด•เต เดตเต‡เดฃเตเดŸเดคเต. เดŽเดจเตเดจเดพเตฝ ASG เด…เดŸเตเดคเตเดคเดฟเดŸเต†เดฏเดพเดฃเต เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดคเต†เด™เตเด•เดฟเตฝ, เดชเดฐเดฎเดพเดตเดงเดฟ เด’เดฐเต เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เด…เดคเดฟเดจเตเดฑเต† เดธเต†เตผเดตเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดชเดคเตเดคเดฟเตฝ เดŽเดคเตเดคเตเดฎเต†เดจเตเดจเต เดˆ เดจเดฟเดฏเดฎเด‚ เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด‚. เด‡เดคเต เดคเดฟเด•เดšเตเดšเตเด‚ เด—เด‚เดญเต€เดฐเดฎเดพเดฏ เด’เดฐเต เดธเดฎเต€เดชเดจเดฎเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† เดชเดคเตเดคเต เดฎเตเดคเตฝ เดฐเดฃเตเดŸเต เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเตเด‚ เดชเดฟเดจเตเดจเดฟเดฒเตเด‚ เดตเดฒเดฟเดฏ เดœเดฎเตเดชเตเด•เตพ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เตเด•เตเด‚.
  • ASG-เดฒเต† เดธเดœเต€เดต เดธเต†เตผเดตเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป AWS API เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•, เด’เดฐเต เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดคเดฟเดจเต† เดตเดฟเดณเดฟเด•เตเด•เตเด• (เดชเต‡เดœเต 249-เดฒเต† "เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเด‚" เด•เดพเดฃเตเด•), เด•เต‚เดŸเดพเดคเต† ASG-เดจเตเดฑเต† เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ_เด•เดชเตเดชเดพเดธเดฟเดฑเตเดฑเดฟ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เดฟเดฏ เดฎเต‚เดฒเตเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด•. เดคเดฟเดฐเด•เตเด•เดฅ. เดˆ เดฐเต€เดคเดฟเดฏเดฟเตฝ, เด“เดฐเต‹ เดชเตเดคเดฟเดฏ ASG เด‡เตปเดธเตเดฑเตเดฑเตปเดธเตเด‚ เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดŸเต†เดฑเดพเดซเต‹เด‚ เด•เต‹เดกเดฟเดจเตเดฑเต† เด…เดคเต‡ เดถเต‡เดทเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเดฐเดฟเดชเดพเดฒเดฟเด•เตเด•เตเดจเตเดจเดคเต เด•เต‚เดŸเตเดคเตฝ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดธเต€เดฑเต‹-เดกเตŒเตบเดŸเตˆเด‚ เดตเดฟเดจเตเดฏเดพเดธเด™เตเด™เตพเด•เตเด•เต เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเดจเต เดฌเดฟเตฝเดฑเตเดฑเต-เด‡เตป เดชเดฟเดจเตเดคเตเดฃ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดŽเดจเตเดจเดพเตฝ 2019 เดฎเต†เดฏเต เดตเดฐเต†, เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เดŸเต€เดฎเดฟเดจเต เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดšเต‡เตผเด•เตเด•เดพเตป เดชเดฆเตเดงเดคเดฟเดฏเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ (เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ - เด‡เดตเดฟเดŸเต†).

เดถเดฐเดฟเดฏเดพเดฏ เดชเดฆเตเดงเดคเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดพเดคเต† เดตเดจเตเดจเต‡เด•เตเด•เดพเด‚

เดšเดฟเดฒเดชเตเดชเต‹เตพ เดชเตเดฒเดพเตป เด•เดฎเดพเตปเดกเต เดคเดฟเด•เดšเตเดšเตเด‚ เดถเดฐเดฟเดฏเดพเดฏ เดตเดฟเดจเตเดฏเดพเดธ เดชเดฆเตเดงเดคเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด• เด•เดฎเดพเตปเดกเต เด’เดฐเต เดชเดฟเดถเด•เต เดจเตฝเด•เตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด…เดงเตเดฏเดพเดฏเด‚ 2-เตฝ เดจเดฟเด™เตเด™เตพ เดฎเตเดฎเตเดชเต เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš IAM เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เด…เดคเต‡ เดชเต‡เดฐเดฟเตฝ aws_iam_user เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เดšเต‡เตผเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•:

resource "aws_iam_user" "existing_user" {
   # ะŸะพะดัั‚ะฐะฒัŒั‚ะต ััŽะดะฐ ะธะผั ัƒะถะต ััƒั‰ะตัั‚ะฒัƒัŽั‰ะตะณะพ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั IAM,
   # ั‡ั‚ะพะฑั‹ ะฟะพะฟั€ะฐะบั‚ะธะบะพะฒะฐั‚ัŒัั ะฒ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะธ ะบะพะผะฐะฝะดั‹ terraform import
   name = "yevgeniy.brikman"
}

เด‡เดชเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพ เดชเตเดฒเดพเตป เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดŸเต†เดฑเดพเดซเต‹เด‚ เดจเตเดฏเดพเดฏเดฎเดพเดฏ เด’เดฐเต เดตเดฟเดจเตเดฏเดพเดธ เดชเดฆเตเดงเดคเดฟ เดชเตเดฑเดชเตเดชเต†เดŸเตเดตเดฟเด•เตเด•เตเด‚:

Terraform will perform the following actions:

   # aws_iam_user.existing_user will be created
   + resource "aws_iam_user" "existing_user" {
         + arn                  = (known after apply)
         + force_destroy   = false
         + id                    = (known after apply)
         + name               = "yevgeniy.brikman"
         + path                 = "/"
         + unique_id         = (known after apply)
      }

Plan: 1 to add, 0 to change, 0 to destroy.

เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด• เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดฟเดถเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚:

Error: Error creating IAM User yevgeniy.brikman: EntityAlreadyExists:
User with name yevgeniy.brikman already exists.

   on main.tf line 10, in resource "aws_iam_user" "existing_user":
   10: resource "aws_iam_user" "existing_user" {

เดชเตเดฐเดถเตเดจเด‚, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เด† เดชเต‡เดฐเตเดณเตเดณ เด’เดฐเต IAM เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เด‡เดคเดฟเดจเด•เด‚ เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต เดŽเดจเตเดจเดคเดพเดฃเต. เด‡เดคเต IAM เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพเด•เตเด•เตเด‚ เดธเด‚เดญเดตเดฟเด•เตเด•เดพเด‚. เด†เดฐเต†เด™เตเด•เดฟเดฒเตเด‚ เดˆ เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเดคเดพเด•เดพเด‚, เดŽเดจเตเดจเดพเตฝ เด’เดจเตเดจเตเด•เดฟเตฝ เดเดกเดฟเด•เตพ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต เดตเตˆเดฐเตเดฆเตเดงเตเดฏเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต. เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเดฒเต† เดชเตเดคเตเดฎเตเด–เด™เตเด™เดณเต† เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด†เดถเตเดšเดฐเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจ เดˆ เดชเดฟเดถเด•เดฟเดจเตเดฑเต† เดจเดฟเดฐเดตเดงเดฟ เดตเตเดฏเดคเดฟเดฏเดพเดจเด™เตเด™เดณเตเดฃเตเดŸเต.

เดŸเต†เดฑเดพเดซเต‹เด‚ เดธเตโ€Œเดฑเตเดฑเต‡เดฑเตเดฑเต เดซเดฏเดฒเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณ เดตเดฟเดญเดตเด™เตเด™เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดŸเต†เดฑเดพเดซเต‹เด‚ เดชเตเดฒเดพเตป เด•เดฎเดพเตปเดกเต เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเด•เตเด•เต‚ เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เด•เดพเดฐเตเดฏเด‚. เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดตเดฟเดงเดคเตเดคเดฟเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเดพเตฝ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, AWS เด•เตบเดธเต‹เดณเดฟเตฝ เดธเตเดตเดฎเต‡เดงเดฏเดพ เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†), เด…เดต เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเต เดซเดฏเดฒเดฟเตฝ เด…เดตเดธเดพเดจเดฟเด•เตเด•เดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดชเตเดฒเดพเตป เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ Terraform เด…เดต เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเด•เตเด•เดฟเดฒเตเดฒ. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เด’เดฑเตเดฑเดจเต‹เดŸเตเดŸเดคเตเดคเดฟเตฝ เดถเดฐเดฟเดฏเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจ เด’เดฐเต เดชเตเดฒเดพเตป เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเด‚.

เด‡เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฐเดฃเตเดŸเต เดชเดพเด เด™เตเด™เตพ เดชเด เดฟเด•เตเด•เดพเดจเตเดฃเตเดŸเต.

  • เดจเดฟเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดฎเดฑเตเดฑเตŠเดจเตเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฐเตเดคเต. เดŸเต†เดฑเดพเดซเต‹เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เดญเดพเด—เด‚ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เดชเดฐเดฟเดทเตโ€Œเด•เดฐเดฟเด•เตเด•เดพเดจเดพเด•เดฟเดฒเตเดฒ. เด…เดฒเตเดฒเดพเดคเตเดคเดชเด•เตเดทเด‚, เดจเดฟเด™เตเด™เตพ เดตเดฟเดšเดฟเดคเตเดฐเดฎเดพเดฏ เดŸเต†เดฑเดพเดซเต‹เด‚ เดชเดฟเดถเด•เตเด•เตพ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, IaC-เดฏเตเดŸเต† เดชเดฒ เด†เดจเตเด•เต‚เดฒเตเดฏเด™เตเด™เดณเตเด‚ เดจเดฟเด™เตเด™เตพ เดจเดฟเดฐเดพเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เด•เต‹เดกเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเดฟเดจเตเดฑเต† เด•เตƒเดคเตเดฏเดฎเดพเดฏ เดชเตเดฐเดคเดฟเดจเดฟเดงเดพเดจเด‚ เด†เดฏเดฟเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ.
  • เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเดฟเดจเด•เด‚ เด•เตเดฑเดšเตเดšเต เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•. เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพ เดŸเต†เดฑเดพเดซเต‹เด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดŸเต†เดฑเดพเดซเต‹เด‚ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเต เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต. เดŽเดจเตเดคเต†เดฒเตเดฒเดพเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดฃเดฎเต†เดจเตเดจเต เด‡เดคเตเดตเดดเดฟ เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเดจเต เด…เดฑเดฟเดฏเดพเด‚. เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เด•เดฎเดพเตปเดกเต เดฐเดฃเตเดŸเต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต. เด†เดฆเตเดฏเดคเตเดคเต‡เดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เดณเดฟเดฒเต† เด‰เดฑเดตเดฟเดŸ เดตเดฟเดฒเดพเดธเดฎเดพเดฃเต. เด‡เดตเดฟเดŸเต†เดฏเตเดณเตเดณ เดตเดพเด•เตเดฏเด˜เดŸเดจ เดฑเดฟเดธเต‹เดดเตเดธเต เดฒเดฟเด™เตเด•เตเด•เตพเด•เตเด•เต เดธเดฎเดพเดจเดฎเดพเดฃเต: _. (aws_iam_user.existing_user เดชเต‹เดฒเต†). เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดตเดฟเดญเดตเดคเตเดคเดฟเดจเตเดฑเต† เดเดกเดฟเดฏเดพเดฃเต เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดตเดพเดฆเด‚. เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เดเดกเดฟ aws_iam_user เดŽเดจเตเดจเดคเต เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดจเดพเดฎเดฎเดพเดฃเต†เดจเตเดจเตเด‚ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, yevgeniy.brikman), เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เดเดกเดฟ aws_instance EC2 เดธเต†เตผเดตเตผ เดเดกเดฟ (i-190e22e5 เดชเต‹เดฒเต†) เด†เดฃเต†เดจเตเดจเตเด‚ เดชเดฑเดฏเดพเด‚. เด’เดฐเต เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เดŽเด™เตเด™เดจเต† เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเดพเด‚ เดŽเดจเตเดจเดคเต เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด…เดคเดฟเดจเตเดฑเต† เดชเต‡เดœเดฟเดจเตเดฑเต† เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเตฝ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

    เด…เดงเตเดฏเดพเดฏเด‚ 2-เดฒเต† IAM เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตŠเดชเตเดชเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† Terraform เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เดจเดฟเด™เตเด™เตพ เดšเต‡เตผเดคเตเดค aws_iam_user เดฑเดฟเดธเต‹เดดเตโ€Œเดธเดฟเดจเต† เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เด•เดฎเดพเตปเดกเต เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต (เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ yevgeniy.brikman เดŽเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเต‡เดฐเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต):

    $ terraform import aws_iam_user.existing_user yevgeniy.brikman

    เดจเดฟเด™เตเด™เดณเตเดŸเต† IAM เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดŸเต†เดฑเดพเดซเต‹เด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเดฒเต† aws_iam_user.existing_user เดฑเดฟเดธเต‹เดดเตเดธเดฟเดจเตเด‚ เด‡เดŸเดฏเดฟเตฝ เด’เดฐเต เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเต เดซเดฏเตฝ เด…เดธเต‹เดธเดฟเดฏเต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดŸเต†เดฑเดพเดซเต‹เด‚ AWS API-เดฏเต† เดตเดฟเดณเดฟเด•เตเด•เตเด‚. เด‡เดชเตเดชเต‹เตพ เดฎเตเดคเตฝ, เดจเดฟเด™เตเด™เตพ เดชเตเดฒเดพเตป เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, IAM เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เด‡เดคเดฟเดจเด•เด‚ เด‰เดฃเตเดŸเต†เดจเตเดจเตเด‚ เด…เดคเต เดตเต€เดฃเตเดŸเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดฟเดฒเตเดฒเต†เดจเตเดจเตเด‚ Terraform เด…เดฑเดฟเดฏเตเด‚.

    Terraform-เดฒเต‡เด•เตเด•เต เด‡เดฎเตเดชเต‹เตผเดŸเตเดŸเตเดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เดงเดพเดฐเดพเดณเด‚ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเดฟเดจเด•เด‚ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด•เต‹เดกเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เดŽเดดเตเดคเตเด•เดฏเตเด‚ เด“เดฐเต‹เดจเตเดจเตเด‚ เด’เดฐเต เดธเดฎเดฏเด‚ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด’เดฐเต เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฃเต เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต. เด…เดคเดฟเดจเดพเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† AWS เด…เด•เตเด•เต—เดฃเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เต‹เดกเตเด‚ เดธเตโ€Œเดฑเตเดฑเต‡เดฑเตเดฑเตเด‚ เดธเตเดตเดฏเดฎเต‡เดต เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ Terraforming (http://terraforming.dtan4.net/) เดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เดŸเต‚เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต.

    เดฑเต€เดซเดพเด•เตโ€ŒเดŸเดฑเดฟเด‚เด—เดฟเดจเต เด…เดคเดฟเดจเตเดฑเต† เดชเต‹เดฐเดพเดฏเตเดฎเด•เตพ เด‰เดฃเตเดŸเดพเด•เดพเด‚

    เดฑเต€เดซเดพเด•เตเดŸเดฑเดฟเด‚เด—เต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เดฟเดฒเต† เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดฐเต€เดคเดฟเดฏเดพเดฃเต, เด…เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพ เด•เต‹เดกเดฟเดจเตเดฑเต† เด†เดจเตเดคเดฐเดฟเด• เด˜เดŸเดจ เดฎเดพเดฑเตเดฑเตเด•เดฏเตเด‚ เดฌเดพเดนเตเดฏ เดธเตเดตเดญเดพเดตเด‚ เดฎเดพเดฑเตเดฑเดพเดคเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด•เต‹เดกเต เด•เต‚เดŸเตเดคเตฝ เดตเตเดฏเด•เตเดคเดตเตเด‚ เดตเตƒเดคเตเดคเดฟเดฏเตเดณเตเดณเดคเตเด‚ เดชเดฐเดฟเดชเดพเดฒเดฟเด•เตเด•เดพเตป เดŽเดณเตเดชเตเดชเดตเตเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฃเต เด‡เดคเต. เดชเดคเดฟเดตเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸ เด’เดฐเต เด’เดดเดฟเดšเตเดšเตเด•เต‚เดŸเดพเดจเดพเดตเดพเดคเตเดค เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดคเดฏเดพเดฃเต เดฑเต€เดซเดพเด•เตเดฑเตเดฑเดฑเดฟเด‚เด—เต. เดŽเดจเตเดจเดพเตฝ Terraform เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚ IaC เดŸเต‚เตพ เดตเดฐเตเดฎเตเดชเต‹เตพ, เด’เดฐเต เด•เต‹เดกเดฟเดจเตเดฑเต† "เดฌเดพเดนเตเดฏ เดธเตเดตเดญเดพเดตเด‚" เดŽเดจเตเดจเดคเตเด•เตŠเดฃเตเดŸเต เดจเดฟเด™เตเด™เตพ เดŽเดจเตเดคเดพเดฃเต เด‰เดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดตเดณเดฐเต† เดถเตเดฐเดฆเตเดงเดพเดฒเตเดตเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เด…เดฒเตเดฒเดพเดคเตเดคเดชเด•เตเดทเด‚ เด…เดชเตเดฐเดคเต€เด•เตเดทเดฟเดค เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เดพเด‚.

    เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต†เดฏเต‹ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเตเดŸเต†เดฏเต‹ เดชเต‡เดฐเตเด•เตพ เด•เต‚เดŸเตเดคเตฝ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดตเตเดจเตเดจเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดคเดฐเด‚ เดฑเต€เดซเดพเด•เตโ€ŒเดŸเดฑเดฟเด‚เด—เต. เดชเดฒ เดเดกเดฟเด‡เด•เตพเด•เตเด•เตเด‚ เดฑเต€เดซเดพเด•เตโ€ŒเดŸเดฑเดฟเด‚เด—เดฟเดจเตเดณเตเดณ เดฌเดฟเตฝเดฑเตเดฑเต-เด‡เตป เดชเดฟเดจเตเดคเตเดฃเดฏเตเดฃเตเดŸเต, เด•เต‚เดŸเดพเดคเต† เดชเตเดฐเต‹เดœเด•เตโ€ŒเดฑเตเดฑเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดชเต‡เดฐเต เดธเตเดตเดฏเดฎเต‡เดต เดชเตเดจเตผเดจเดพเดฎเด•เดฐเดฃเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. เดชเตŠเดคเต-เด‰เดฆเตเดฆเต‡เดถเตเดฏ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเด•เดณเดฟเตฝ, เด‡เดคเต เดจเดฟเด™เตเด™เตพ เดšเดฟเดจเตเดคเดฟเด•เตเด•เดพเดคเตเดค เด’เดฐเต เดจเดฟเดธเตเดธเดพเดฐเดฎเดพเดฏ เดจเดŸเดชเดŸเดฟเด•เตเดฐเดฎเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเตฝ เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดตเดณเดฐเต† เดถเตเดฐเดฆเตเดงเดพเดฒเตเดตเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เด…เดฒเตเดฒเดพเดคเตเดคเดชเด•เตเดทเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเด•เดฐเดพเดฑเตเด•เตพ เด…เดจเตเดญเดตเดชเตเดชเต†เดŸเตเดŸเต‡เด•เตเด•เดพเด‚.

    เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเต†เดฌเตเดธเต†เตผเดตเตผ-เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดจเต เด’เดฐเต เด‡เตปเดชเตเดŸเตเดŸเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ cluster_name เด‰เดฃเตเดŸเต:

    variable "cluster_name" {
       description = "The name to use for all the cluster resources"
       type          = string
    }

    foo เดŽเดจเตเดจ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ เดˆ เดฎเตŠเดกเตเดฏเต‚เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดฟเดฏเต†เดจเตเดจเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด•. เดชเดฟเดจเตเดจเต€เดŸเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต‡เดตเดจเด‚ เดฌเดพเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเตเดจเตผเดจเดพเดฎเด•เดฐเดฃเด‚ เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดฎเดพเดฑเตเดฑเด‚ เดจเดฟเดธเตเดธเดพเดฐเดฎเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดฎเต†เด™เตเด•เดฟเดฒเตเด‚ เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เด‡เดคเต เดธเต‡เดตเดจ เดคเดŸเดธเตเดธเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฐเดฃเดฎเดพเด•เตเด‚.

    เดฐเดฃเตเดŸเต เดธเต†เด•เตเดฏเต‚เดฐเดฟเดฑเตเดฑเดฟ เด—เตเดฐเต‚เดชเตเดชเตเด•เดณเตเดŸเต†เดฏเตเด‚ ALBเดฏเตเดŸเต†เดฏเตเด‚ เดจเต†เดฏเดฟเด‚ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เด‰เตพเดชเตเดชเต†เดŸเต† เดจเดฟเดฐเดตเดงเดฟ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเดฟเตฝ เดตเต†เดฌเตโ€Œเดธเต†เตผเดตเตผ-เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดฎเตŠเดกเตเดฏเต‚เตพ cluster_name เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต เดตเดธเตเดคเตเดค.

    resource "aws_lb" "example" {
       name                    = var.cluster_name
       load_balancer_type = "application"
       subnets = data.aws_subnet_ids.default.ids
       security_groups      = [aws_security_group.alb.id]
    }

    เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดฑเดฟเดธเต‹เดดเตโ€Œเดธเดฟเดฒเต† เดจเต†เดฏเดฟเด‚ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดฎเดพเดฑเตเดฑเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดŸเต†เดฑเดพเดซเต‹เด‚ เด† เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเดจเตเดฑเต† เดชเดดเดฏ เดชเดคเดฟเดชเตเดชเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เดธเตเดฅเดพเดจเดคเตเดคเต เดชเตเดคเดฟเดฏเตŠเดฐเต†เดฃเตเดฃเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดŽเดจเตเดจเดพเตฝ เด† เด‰เดฑเดตเดฟเดŸเด‚ เด’เดฐเต ALB เด†เดฃเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด‡เดŸเดฏเดฟเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเต†เดฌเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดŸเตเดฐเดพเดซเดฟเด•เต เดฑเต€เดกเดฏเดฑเด•เตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดธเด‚เดตเดฟเดงเดพเดจเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เตเดฃเตเดŸเดพเด•เดฟเดฒเตเดฒ. เด…เดคเตเดชเต‹เดฒเต†, เด’เดฐเต เดธเตเดฐเด•เตเดทเดพ เด—เตเดฐเต‚เดชเตเดชเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดฟเดฏเดพเตฝ, เด’เดฐเต เดชเตเดคเดฟเดฏ เด—เตเดฐเต‚เดชเตเดชเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดฐเต† เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต†เตผเดตเดฑเตเด•เตพ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŸเตเดฐเดพเดซเดฟเด•เตเด•เดฟเดจเต† เดจเดฟเดฐเดธเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเด‚.

    เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเดพเดฏเต‡เด•เตเด•เดพเดตเตเดจเตเดจ เดฎเดฑเตเดฑเตŠเดฐเต เดคเดฐเด‚ เดฑเต€เดซเดพเด•เตโ€ŒเดŸเดฑเดฟเด‚เด—เต เดŸเต†เดฑเดซเต‹เด‚ เดเดกเดฟ เดฎเดพเดฑเตเดฑเตเด•เดฏเดพเดฃเต. เดจเดฎเตเด•เตเด•เต เดตเต†เดฌเตโ€Œเดธเต†เตผเดตเตผ-เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดฒเต† aws_security_group เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เดพเด‚:

    resource "aws_security_group" "instance" {
      # (...)
    }

    เดˆ เดตเดฟเดญเดตเดคเตเดคเดฟเดจเตเดฑเต† เดเดกเดจเตเดฑเดฟเดซเดฏเดฑเดฟเดจเต† เด‡เตปเดธเตโ€Œเดฑเตเดฑเตปเดธเต เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต. เดฑเต€เดซเดพเด•เตโ€ŒเดŸเดฑเดฟเด‚เด—เต เดธเดฎเดฏเดคเตเดคเต เดจเดฟเด™เตเด™เตพ เด…เดคเดฟเดจเต† เด•เต‚เดŸเตเดคเตฝ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดตเตเดจเตเดจ (เดจเดฟเด™เตเด™เดณเตเดŸเต† เด…เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ) cluster_instance เดŽเดจเตเดจ เดชเต‡เดฐเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเตเดตเต†เดจเตเดจเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด•:

    resource "aws_security_group" "cluster_instance" {
       # (...)
    }

    เด…เดตเดธเดพเดจเด‚ เดŽเดจเตเดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเด‚? เด…เดคเต เดถเดฐเดฟเดฏเดพเดฃเต: เด’เดฐเต เดคเดŸเดธเตเดธเด‚.

    เดŸเต†เดฑเดพเดซเต‹เด‚ เด“เดฐเต‹ เดฑเดฟเดธเต‹เดดเตเดธเต เดเดกเดฟเดฏเต†เดฏเตเด‚ เด•เตเดฒเต—เดกเต เดชเตเดฐเตŠเดตเตˆเดกเตผ เดเดกเดฟเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, iam_user AWS IAM เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดเดกเดฟเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† aws_instance AWS EC2 เดธเต†เตผเดตเตผ เดเดกเดฟเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพ เดฑเดฟเดธเต‹เดดเตเดธเต เดเดกเดฟ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต cluster_instance เดฒเต‡เด•เตเด•เต เดชเดฑเดฏเตเด•, aws_security_group-เดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเดฒเต†เดจเตเดจเดชเต‹เดฒเต†) เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพ เดชเดดเดฏ เด‰เดฑเดตเดฟเดŸเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดฟ เดชเตเดคเดฟเดฏเตŠเดฐเต†เดฃเตเดฃเด‚ เดšเต‡เตผเดคเตเดคเดคเตเดชเต‹เดฒเต† เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเด‚. เดจเดฟเด™เตเด™เตพ เดˆ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต†เตผเดตเดฑเตเด•เตพ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŸเตเดฐเดพเดซเดฟเด•เตเด•เดฟเดจเต† เดจเดฟเดฐเดธเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดฎเตเดชเต‹เตพ เดŸเต†เดฑเดพเดซเต‹เด‚ เดชเดดเดฏ เดธเตเดฐเด•เตเดทเดพ เด—เตเดฐเต‚เดชเตเดชเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดคเดฟเดฏเตŠเดฐเต†เดฃเตเดฃเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

    เดˆ เดšเตผเดšเตเดšเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดŽเดŸเตเด•เตเด•เต‡เดฃเตเดŸ เดจเดพเดฒเต เดชเตเดฐเดงเดพเดจ เดชเดพเด เด™เตเด™เตพ เด‡เดคเดพ.

    • เดŽเดชเตเดชเต‹เดดเตเด‚ เดชเตเดฒเดพเตป เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•. เด‡เดคเดฟเดจเต เดˆ เด•เตเดฐเตเด•เตเด•เตเด•เดณเต†เดฒเตเดฒเดพเด‚ เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดจเดพเด•เตเด‚. เด…เดคเดฟเดจเตเดฑเต† เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เดถเตเดฐเดฆเตเดงเดพเดชเต‚เตผเดตเด‚ เด…เดตเดฒเต‹เด•เดจเด‚ เดšเต†เดฏเตเดฏเตเด•, เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเตป เดชเดพเดŸเดฟเดฒเตเดฒเดพเดคเตเดค เดตเดฟเดญเดตเด™เตเด™เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเตป Terraform เดชเดฆเตเดงเดคเดฟเดฏเดฟเดŸเตเดจเตเดจ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•.
    • เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ, เด’เดฑเดฟเดœเดฟเดจเตฝ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด’เดฐเต เดชเด•เดฐเด‚ เดตเดฏเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดถเตเดฐเดฆเตเดงเดพเดชเต‚เตผเดตเตเดตเด‚ เดšเดฟเดจเตเดคเดฟเด•เตเด•เตเด•. เด‰เดคเตเดคเดฐเด‚ เด…เดคเต† เดŽเดจเตเดจเดพเดฃเต†เด™เตเด•เดฟเตฝ, create_before_destroy-เดจเต เดธเดนเดพเดฏเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เดฐเดฃเตเดŸเต เด˜เดŸเตเดŸเด™เตเด™เตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เด’เดฐเต‡ เดซเดฒเด‚ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดจเต‡เดŸเดพเดจเดพเด•เตเด‚: เด†เดฆเตเดฏเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดชเตเดคเดฟเดฏ เดฑเดฟเดธเต‹เดดเตเดธเต เดšเต‡เตผเดคเตเดคเต เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด• เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•, เดคเตเดŸเตผเดจเตเดจเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดดเดฏ เดฑเดฟเดธเต‹เดดเตเดธเต เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดคเต เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด• เด•เดฎเดพเตปเดกเต เดตเต€เดฃเตเดŸเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•.
    • เดเดกเดจเตเดฑเดฟเดซเดฏเดฑเตเด•เตพ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเต เด…เดตเดธเตเดฅ เดฎเดพเดฑเตเดฑเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด’เดฐเต เดฑเดฟเดธเต‹เดดเตโ€Œเดธเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดเดกเดฟ เดฎเดพเดฑเตเดฑเดฃเดฎเต†เด™เตเด•เดฟเตฝ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, aws_security_group-เดจเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต cluster_instance เดŽเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดชเตเดจเตผเดจเดพเดฎเด•เดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเด•) เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเดคเต† เด…เดคเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•, เด…เดคเดฟเดจเดจเตเดธเดฐเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพ Terraform เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเต เดซเดฏเตฝ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดฃเด‚. เด‡เดคเต เด’เดฐเดฟเด•เตเด•เดฒเตเด‚ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดšเต†เดฏเตเดฏเดฐเตเดคเต - เดชเด•เดฐเด‚ เดŸเต†เดฑเดพเดซเต‹เด‚ เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•. เดเดกเดจเตเดฑเดฟเดซเดฏเดฑเตเด•เตพ เดชเตเดจเตผเดจเดพเดฎเด•เดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพ เดŸเต†เดฑเดพเดซเต‹เด‚ เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเต mv เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดฃเด‚, เด…เดคเดฟเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเตเดฃเตเดŸเต:
      terraform state mv <ORIGINAL_REFERENCE> <NEW_REFERENCE>

      ORIGINAL_REFERENCE เดŽเดจเตเดจเดคเต เดฑเดฟเดธเต‹เดดเตโ€Œเดธเดฟเดจเต† เด…เดคเดฟเดจเตเดฑเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเดฆเดชเตเดฐเดฏเต‹เด—เดฎเดพเดฃเต, เดจเดฟเด™เตเด™เตพ เด…เดคเต เดจเต€เด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เด‡เดŸเดฎเดพเดฃเต NEW_REFERENCE. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, aws_security_group เด—เตเดฐเต‚เดชเตเดชเดฟเดจเตเดฑเต† เดชเต‡เดฐเต instance-เตฝ เดจเดฟเดจเตเดจเต cluster_instance-เดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

      $ terraform state mv 
         aws_security_group.instance 
         aws_security_group.cluster_instance

      aws_security_group.instance-เดฎเดพเดฏเดฟ เดฎเตเดฎเตเดชเต เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเตเดจเตเดจ เดธเด‚เดธเตเดฅเดพเดจเด‚ เด‡เดชเตเดชเต‹เตพ aws_security_group.cluster_instance-เดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดคเตเดคเดฃเดฎเต†เดจเตเดจเต เด‡เดคเต Terraform-เดจเต‹เดŸเต เดชเดฑเดฏเตเดจเตเดจเต. เดˆ เด•เดฎเดพเตปเดกเต เดŸเต†เดฑเดพเดซเต‹เด‚ เดชเตเดฒเดพเตป เดชเตเดจเตผเดจเดพเดฎเด•เดฐเดฃเด‚ เดšเต†เดฏเตเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตŠเดจเตเดจเตเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดšเต†เดฏเตเดคเต.

    • เดšเดฟเดฒ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เดชเดฒ เดตเดฟเดญเดตเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดฎเดพเดฑเตเดฑเดพเดจเดพเดตเดฟเดฒเตเดฒ. เดจเดฟเด™เตเด™เตพ เด…เดต เดฎเดพเดฑเตเดฑเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดŸเต†เดฑเดพเดซเต‹เด‚ เดชเดดเดฏ เด‰เดฑเดตเดฟเดŸเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เดธเตเดฅเดพเดจเดคเตเดคเต เดชเตเดคเดฟเดฏเตŠเดฐเต†เดฃเตเดฃเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ เดฎเดพเดฑเตเดฑเตเดฎเตเดชเต‹เตพ เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เด“เดฐเต‹ เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เดชเต‡เดœเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚, เด…เดคเดฟเดจเดพเตฝ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด•. เดŽเดชเตเดชเต‹เดดเตเด‚ เดชเตเดฒเดพเตป เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ create_before_destroy เดธเตเดŸเตเดฐเดพเดฑเตเดฑเดœเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•.

    เดฎเดพเดฑเตเดฑเดฟเดตเต†เดšเตเดš เดธเตเดฅเดฟเดฐเดค เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณเดคเดพเดฃเต... เดฎเดพเดฑเตเดฑเดฟเดตเดฏเตเด•เตเด•เดฒเดฟเดจเตŠเดชเตเดชเด‚

    AWS เดชเต‹เดฒเตเดณเตเดณ เดšเดฟเดฒ เด•เตเดฒเต—เดกเต เดฆเดพเดคเดพเด•เตเด•เดณเตเดŸเต† API-เด•เตพ เด…เดธเดฎเดจเตเดตเดฟเดคเดตเตเด‚ เด•เดพเดฒเดคเดพเดฎเดธเดฎเตเดณเตเดณ เดธเตเดฅเดฟเดฐเดคเดฏเตเดฎเดพเดฃเต. เด…เดญเตเดฏเตผเดคเตเดฅเดฟเดšเตเดš เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเดคเต† เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเดจเต เด‰เดŸเดจเดŸเดฟ เด’เดฐเต เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดจเตฝเด•เดพเดฎเต†เดจเตเดจเดพเดฃเต เด…เดธเดฟเตปเด•เตเดฐเดฃเดฟ เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต. เด•เดพเดฒเดคเดพเดฎเดธเดฎเตเดณเตเดณ เดธเตเดฅเดฟเดฐเดค เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดชเตเดฐเดšเดฐเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดธเดฎเดฏเดฎเต†เดŸเตเดคเตเดคเต‡เด•เตเด•เดพเด‚ เดŽเดจเตเดจเดพเดฃเต; เด‡เดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดคเดฟเด•เดฐเดฃเด™เตเด™เตพ เดชเตŠเดฐเตเดคเตเดคเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดคเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† API เด•เต‹เดณเตเด•เดณเต‹เดŸเต เดเดคเต เดกเดพเดฑเตเดฑเดพ เด‰เดฑเดตเดฟเดŸ เดชเด•เตผเดชเตเดชเดพเดฃเต เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดจเดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเด‚.

    เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต EC2 เดธเต†เตผเดตเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ AWS-เดฒเต‡เด•เตเด•เต เด’เดฐเต API เด•เต‹เตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเตเดตเต†เดจเตเดจเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด•. เดธเต†เตผเดตเตผ เดคเดจเตเดจเต† เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเดคเต†, เดŽเดชเดฟเด เด’เดฐเต โ€œเดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏโ€ เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ (201 เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเดคเต) เดเดคเดพเดฃเตเดŸเต เดคเตฝเด•เตเดทเดฃเด‚ เดจเตฝเด•เตเด‚. เดจเดฟเด™เตเด™เตพ เด‰เดŸเตป เดคเดจเตเดจเต† เด‡เดคเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเด‚, เด•เดพเดฐเดฃเด‚ เด† เดธเดฎเดฏเดคเตเดคเต AWS เด‡เดชเตเดชเต‹เดดเตเด‚ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดธเต†เตผเดตเตผ เด‡เดคเตเดตเดฐเต† เดฌเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดˆ เดธเต†เตผเดตเดฑเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพ เดฎเดฑเตเดฑเตŠเดฐเต เด•เต‹เตพ เดšเต†เดฏเตเดฏเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดชเดฟเดถเด•เต เดฒเดญเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚ (404 เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ). เดˆ EC2 เดธเต†เตผเดตเดฑเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเดฏเดฟเดŸเดคเตเดคเตเด‚ เดฒเดญเตเดฏเดฎเดพเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต AWS-เตฝ เด‰เดŸเดจเต€เดณเด‚ เดชเตเดฐเดšเดฐเดฟเดชเตเดชเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚, เดจเดฟเด™เตเด™เตพ เด•เตเดฑเดšเตเดšเต เดจเดฟเดฎเดฟเดทเด™เตเด™เตพ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดฟเดตเดฐเตเด‚.

    เดจเดฟเด™เตเด™เตพ เด…เดฒเดธเดฎเดพเดฏ เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณ เด’เดฐเต เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต API เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เดดเต†เดฒเตเดฒเดพเด‚, เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เดจเดฟเด™เตเด™เดณเตเดŸเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด‡เดŸเดฏเตโ€Œเด•เตเด•เดฟเดŸเต† เดตเต€เดฃเตเดŸเตเด‚ เดถเตเดฐเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, AWS SDK เด‡เดคเดฟเดจเตเดณเตเดณ เดจเดฒเตเดฒ เดŸเต‚เดณเตเด•เดณเตŠเดจเตเดจเตเด‚ เดจเตฝเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† เดŸเต†เดฑเดพเดซเต‹เด‚ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต 6813 (https://github.com/hashicorp/terraform/issues/6813) เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เดงเดพเดฐเดพเดณเด‚ เดฌเด—เตเด•เตพเด•เตเด•เต เดตเดฟเดงเต‡เดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต.

    $ terraform apply
    aws_subnet.private-persistence.2: InvalidSubnetID.NotFound:
    The subnet ID 'subnet-xxxxxxx' does not exist

    เดฎเดฑเตเดฑเตŠเดฐเต เดตเดฟเดงเดคเตเดคเดฟเตฝ เดชเดฑเดžเตเดžเดพเตฝ, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ (เด’เดฐเต เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเต เดชเต‹เดฒเต†) เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดšเดฟเดฒ เดตเดฟเดตเดฐเด™เตเด™เตพ (เดชเตเดคเตเดคเดพเดฏเดฟ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเดฟเดจเตเดฑเต† เดเดกเดฟ เดชเต‹เดฒเต†) เดจเต‡เดŸเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเดจเต เด…เดคเต เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเดฏเดฟเดฒเตเดฒ. เดˆ เดฌเด—เตเด•เดณเดฟเตฝ เดญเต‚เดฐเดฟเดญเดพเด—เดตเตเด‚ (6813 เด‰เตพเดชเตเดชเต†เดŸเต†) เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด…เดต เด•เดพเดฒเดพเด•เดพเดฒเด™เตเด™เดณเดฟเตฝ เด•เตเดฐเต‹เดชเตเดชเต เด…เดชเตเดชเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚ เดŸเต†เดฑเดพเดซเต‹เด‚ เด’เดฐเต เดชเตเดคเดฟเดฏ เดฑเดฟเดธเต‹เดดเตเดธเต เดคเดฐเดคเตเดคเดฟเดจเต เดชเดฟเดจเตเดคเตเดฃ เดšเต‡เตผเด•เตเด•เตเดฎเตเดชเต‹เตพ. เด‡เดคเต เด…เดฐเต‹เดšเด•เดฎเดพเดฃเต, เดชเด•เตเดทเต‡ เดฎเดฟเด•เตเด• เด•เต‡เดธเตเด•เดณเดฟเดฒเตเด‚ เด’เดฐเต เดฆเต‹เดทเดตเตเด‚ เดตเดฐเตเดคเตเดคเตเดจเตเดจเดฟเดฒเตเดฒ. เดจเดฟเด™เตเด™เตพ เดŸเต†เดฑเดพเดซเต‹เด‚ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดตเต€เดฃเตเดŸเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดŽเดฒเตเดฒเดพเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚, เด•เดพเดฐเดฃเด‚ เดˆ เดธเดฎเดฏเด‚ เดตเดฟเดตเดฐเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดตเตเดฏเดพเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเด‚.

    Evgeniy Brikman เดŽเดจเตเดจ เดชเตเดธเตเดคเด•เดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดˆ เด‰เดฆเตเดงเดฐเดฃเดฟ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต "เดŸเต†เดฑเดพเดซเต‹เด‚: เด•เต‹เดกเต เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด‚".

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•