ืืื ืก ืืืืืคึผืื ืงื ืึท ืืืกื ืคึผืืืคืึธืื, ืึทืจืืึทื ืืขืจืขืื ื ืื ืฉืืึทืืืช ืฆื ืืืคึผืก, ืืืื ืกืืืืืืึทื ืฅ ืืื ืืืคึผืืืืืึทื ื ืืขืงื ืืงืก, ืืื ืืขืืื ื ืืื ืืขืจ ืืขื ืขืจืึทื ืืฉืื ืืืึธืก ืืืืจืงื Terraform ืืื ืึทืืืขืืืื:
- ืื ืฆืืืื ืืื ืคึฟืึทืจ_ืืขืืขืจ ืคึผืึทืจืึทืืขืืขืจืก ืืึธืื ืืืืืืืืฉืึทื ื;
- ืืึทืืจืขื ืขืฆื ื ืื ืืึทืื ืืืื ืืืคึผืืืืืึทื ืฅ;
- ืืคืืื ืึท ืืื ืคึผืืึทื ืงืขื ืขื ืคืึทืจืืึธืื;
- ืจืขืคืึทืงืืึธืจืื ื ืงืขื ืขื ืืึธืื ืืืึทื ืคึผืืืคืึธืื;
- ืืืคืขืจื ืงืึธืืืืจืึทื ืก ืืื ืงืึธื ืกืืกืืขื ื ... ืืื ืืืคืขืจืึทื.
ืื ืฆืืืื ืืื ืคึฟืึทืจ_ืืขืืขืจ ืคึผืึทืจืึทืืขืืขืจืก ืืึธืื ืืืืืืืืฉืึทื ื
ืื ืืืืฉืคืืื ืืื ืืขื ืงืึทืคึผืืื ืืึทืื ืืจืืื ื ืืฆื ืคืื ืื ืฆืืืื ืคึผืึทืจืึทืืขืืขืจ ืืื ืื ืคึฟืึทืจ_ืืขืืฉ ืืืืกืืจืืง ืืื ืืืคึผืก ืืื ืงืึทื ืืืฉืึทื ืึทื ืืึธืืืง. ืืื ืืืจืืคืืจื ืืื, ืึธืืขืจ ืืื ืืึธืื ืฆืืืื ืืืืืืืง ืืืืืืืืฉืึทื ื ืึทื ืืืจ ืืึทืจืคึฟื ืฆื ืืืื ืึทืืืขืจ ืคืื.
- ืฆืืืื ืืื ืคึฟืึทืจ_ืืขืืฉ ืงืขื ืขื ื ืืฉื ืืขืจืืึธื ืขื ืงืืื ืจืืกืึธืจืก ืจืขืืืืืึทื ืืืขืจืืึทืืึทืื.
- ืฆืืืื ืืื ืคึฟืึทืจ_ืืขืืฉ ืงืขื ืขื ื ืื ืืืื ืืขืืืืื ื ืืื ืืึธืืืืข ืงืึทื ืคืืืืขืจืืืฉืึทื.
count ืืื for_each ืงืขื ืขื ื ืืฉื ืืขืจืืึธื ืขื ืงืืื ืจืืกืึธืจืก ืจืขืืืืืึทื ืืืขืจืืึทืืึทืื
ืืืึทืืืฉืึทื ืืืจ ืืึทืจืคึฟื ืฆื ืฆืขืืืืงืืขื ืขืืืขืืข EC2 ืกืขืจืืืขืจืก ืืื ืคึฟืึทืจ ืขืืืขืืข ืกืืื ืืืจ ืืึธื ื ืืฉื ืืืขืื ืฆื ื ืืฆื ASG. ืืืื ืงืึธื ืงืขื ืืืื ืืื ืืึธืก:
resource "aws_instance" "example_1" {
count = 3
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
ืืื ืก ืงืืง ืืืึท ืืื ืืืื ืขืจ ืืืจื ืืืื ืขืจ.
ืืื ื ืื ืฆืืืื ืคึผืึทืจืึทืืขืืขืจ ืืื ืืึทืฉืืืื ืฆื ืึท ืกืืึทืืืง ืืืขืจื, ืืขืจ ืงืึธื ืืืขื ืึทืจืืขืื ืึธื ืคืจืืืืขืืขื: ืืืขื ืืืจ ืืืืคื ืื ืฆืืืืืื ืืึทืคึฟืขื, ืขืก ืืืขื ืฉืึทืคึฟื ืืจืื EC2 ืกืขืจืืืขืจืก. ืึธืืขืจ ืืืึธืก ืืืื ืืืจ ืืืืื ืฆืขืืืืงืืขื ืืืื ืกืขืจืืืขืจ ืืื ืืขืืขืจ ืึทืืืึทืืืึทืืืืืื ืืึธื ืข (ืึทื) ืืื ืืืื ืงืจืึทื ื AWS ืืขืื ื? ืืืจ ืงืขื ื ืืึธืื ืืืื ืงืึธื ืึท ืจืฉืืื ืคืื ืืึธื ืขืก ืคึฟืื ืื ืืึทืื ืืงืืจ ืคืื 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" {}
ืืขืจ ืงืึธื ืืืขื ืืืื ืึทืจืืขื ืืื, ืืืืึทื ืื ืฆืืืื ืคึผืึทืจืึทืืขืืขืจ ืงืขื ืขื ืืขืจืืึธื ืขื ืืึทืื ืงืืืืื ืึธื ืงืืื ืคืจืืืืขืืขื. ืึธืืขืจ ืืืึธืก ืืึทืคึผืึทื ื ืืืื ืื ื ืืืขืจ ืคืื ืกืขืจืืืขืจืก ืืืจ ืืึทืจืคึฟื ืฆื ืฉืึทืคึฟื ืืขืคึผืขื ืืก ืืืืฃ ืื ืจืขืืืืืึทื ืคืื ืขืืืขืืข ืืืื? ืฆื ืืึทืืืืึทืื ืืขื, ืื ืืืืึทืกื ืืืขื ืืื ืฆื ื ืืฆื ืื ืจืึทื ืืึทื_ืื ืืขืืขืจ ืืืื, ืืืึธืก, ืืื ืืขืจ ื ืึธืืขื ืกืึทืืืืฉืขืก, ืงืขืจื ืึท ืืจืึทืค ืื ืืึทืืืฉืขืจ:
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.
ืืขืจืจืึทืคืึธืจื ืจืืงืืืืืขืจื ืึทื ืฆืืืื ืืื ืคึฟืึทืจ_ืืขืืฉ ืืึธื ืืืื ืงืึทืืงืืึทืืืืืื ืืขืฉืึทืก ืื ืคึผืืึทื ืืจืื ื ืคืึทืกืข, ืืืืืขืจ ืงืืื ืจืขืกืืจืกื ืืขื ืขื ืืืฉืืคื ืึธืืขืจ ืืึทืืึทืคืืื. ืืขื ืืืื ืึทื ืฆืืืื ืืื ืคึฟืึทืจ_ืืขืืฉ ืงืขื ืขื ืึธืคึผืฉืืงื ืฆื ืืืืขืจืึทืืก, ืืืขืจืืึทืืึทืื, ืืึทืื ืงืืืืื, ืืื ืืคืืื ืืืื ืจืฉืืืืช (ืืื ืืึทื ื ืืื ืืืืขืจ ืืขื ื ืงืขื ืขื ืืืื ืืืฉืืืกื ืืื ืกืงืขืืืฉืืืื ื ืฆืืื), ืึธืืขืจ ื ืืฉื ืฆื ืงืึทืืคึผืืืืึทื ืจืืกืึธืจืก ืจืขืืืืืึทื ืืืขืจืืึทืืึทืื.
ืฆืืืื ืืื ืคึฟืึทืจ_ืืขืืฉ ืงืขื ืขื ื ืื ืืืื ืืขืืืืื ื ืืื ืืึธืืืืข ืงืึทื ืคืืืืขืจืืืฉืึทื
ืึทืืึธื ืืืจ ืงืขื ืืืื ืืขืคืจืืืืื ืฆื ืืืืื ืึท ืฆืืืื ืคึผืึทืจืึทืืขืืขืจ ืฆื ืืืื ืืึธืืืืข ืงืึทื ืคืืืืขืจืืืฉืึทื:
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, ื ืืฆื ืฆืืืื ืึธืืขืจ ืคึฟืึทืจ_ืืขืืฉ ืืื ืึท ืืึธืืืืข ืืืื ืืื ื ืืฉื ืืขืฉืืืฆื. ืืืื ืื Terraform 0.12 ืืขืืืื ื ืืขืจืืช (http://bit.ly/3257bv4), HashiCorp ืคึผืืึทื ื ืฆื ืืืืื ืืขื ืคืืืืงืืื ืืื ืืขืจ ืฆืืงืื ืคึฟื, ืึทืืื ืืืคึผืขื ืืื ื ืืืืฃ ืืืขื ืืืจ ืืืืขื ืขื ืืขื ืืื, ืขืก ืงืขื ืฉืืื ืืืื ืืืจืขืืืืื. ืฆื ืืืืกื ืืืืขืจ,
ืืืืืืืืฉืึทื ื ืคืื ื ืื ืืึทืื ืืืื ืืืคึผืืืืืึทื ืฅ
ื ืืฆื ืื create_before_destroy ืืืึธืง ืืื ืงืึธืืืื ืึทืฆืืข ืืื ASG ืืื ืึท ืืจืืืก ืืืืืื ื ืคึฟืึทืจ ืงืจืืืืืื ื ื ืื ืืึทืื ืืืื ืืืคึผืืืืืึทื ืฅ, ืึทืืืฅ ืคึฟืึทืจ ืืืื ืงืืืืืืึทื: ืึทืืืึธืกืงืึทืืื ื ืึผืืืื ืืขื ืขื ื ืืฉื ืืขืฉืืืฆื. ืึธืืขืจ ืฆื ืืืื ืืขืจ ืืขื ืื, ืืึธืก ืืึทืฉืืขืืืงื ืื ASG ืืจืืืก ืฆืืจืืง ืฆื min_size ืืืืฃ ืืขืืขืจ ืืืคึผืืืืืึทื ื, ืืืึธืก ืงืขื ืืืื ืึท ืคึผืจืึธืืืขื ืืืื ืืืจ ื ืืฆื ืึทืืืึธืกืงืึทืืื ื ืึผืืืื ืฆื ืคืึทืจืืจืขืกืขืจื ืื ื ืืืขืจ ืคืื ืกืขืจืืืขืจืก ืคืืืกื ืืืง.
ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืื ืืืขืืกืขืจืืืขืจ-ืงื ืืื ืืึธืืืืข ืึผืืื ืึท ืคึผืึธืจ ืคืื aws_autoscaling_schedule ืจืขืกืืจืกื, ืืืึธืก ืืื 9:11 ืื ืงืจืืกืึทื ืื ื ืืืขืจ ืคืื ืกืขืจืืืขืจืก ืืื ืืขื ืงื ืืื ืคืื ืฆืืืื ืฆื ืฆืขื. ืืืื ืืืจ ืฆืขืืืืงืืขื ืืื, ืืึธืื, 9:XNUMX, ืื ื ืืึทืข ASG ืืืขื ืฉืืืืื ืึทืจืืืฃ ืืื ืืืืื ืฆืืืื ืกืขืจืืืขืจืก ืืื ืืื ืฆืขื ืืื ืืืืืื ืึทืืื ืืื XNUMX:XNUMX ืืขืจ ืืืืึทืืขืจ ืืึธื.
ืืขื ืืึทืืจืขื ืขืฆืื ื ืงืขื ืขื ืืืื ืกืขืจืงืึทืืืืขื ืืื ืืื ืขืืืขืืข ืืืขืื.
- ืืืืฉื ืื ืจืืงืขืจืึทื ืก ืคึผืึทืจืึทืืขืืขืจ ืืื aws_autoscaling_schedule ืคืื 0 9 * * * ("ืืืืคื ืืืึท 9:0") ืฆื ืขืคึผืขืก ืืื 59-9 17-9 * * * ("ืืืืคื ืืขืืขืจ ืืื ืื ืคืื 5:XNUMX ืฆื XNUMX:XNUMX"). ืืืื ASG ืืื ืฉืืื ืฆืขื ืกืขืจืืืขืจืก, ืคืืืกื ืืืง ืืขื ืึทืืืึธืกืงืึทืืื ื ืืขืจืฉื ืืืืืขืจ ืืืขื ื ืืฉื ืืืืฉื ืขืคึผืขืก, ืืืึธืก ืืื ืืืึธืก ืืืจ ืืืขืื. ืืืขืจ ืืืื ืื ASG ืืื ืืืืื ืืขืฆืื ืก ืืืคึผืืืื, ืื ืืขืจืฉื ืืืขื ืขื ืฉืืจ ืึทื ืืื ืึท ืืึทืงืกืืืื ืคืื ืึท ืืื ืื ืื ื ืืืขืจ ืคืื ืืืึทื ืกืขืจืืืขืจืก ืืืขื ืืขืจืืจืืืื ืฆืขื. ืืึธืก ืืื ื ืืฉื ืึท ืืึธืจ ืขืืขืืึทื ื ืฆืืืึทื ื, ืืื ืืจืืืก ืืืฉืึทืืคึผืก ืคืื ืฆืขื ืฆื ืฆืืืื ืกืขืจืืืขืจืก ืืื ืฆืืจืืง ืงืขื ืขื ืืืื ืคืึทืจืฉืึทืคื ืคึผืจืึธืืืขืืก ืคึฟืึทืจ ืืืืขืจื.
- ืฉืึทืคึฟื ืึท ืื ืื ืฉืจืืคื ืืืึธืก ื ืืฆื ืื AWS API ืฆื ืืึทืฉืืืืขื ืื ื ืืืขืจ ืคืื ืึทืงืืืื ืกืขืจืืืขืจืก ืืื ืื ASG, ืจืืคื ืขืก ืืื ืึท ืคืื ืืจืืืกื ืืืง ืืึทืื ืืงืืจ (ืืขื "ืคืื ืืจืืืกื ืืืง ืืึทืืึท ืืงืืจ" ืืืืฃ ืืืึทื 249), ืืื ืฉืืขืื ืื ASG's wished_capacity ืคึผืึทืจืึทืืขืืขืจ ืฆื ืื ืืืขืจื ืืืืืขืงืขืจื ืืืจื ืื ืฉืจืืคื. ืืขื ืืืขื, ืืขืืขืจ ื ืืึท ASG ืืืึทืฉืคึผืื ืืืขื ืฉืืขื ืืืง ืืืืคื ืืื ืืขืจ ืืขืืืืงืขืจ ืงืึทืคึผืึทืฆืืืขื ืืื ืื ืืืืืกืืื ื Terraform ืงืึธื ืืื ืืืื ืขืก ืืขืจ ืฉืืืขืจ ืฆื ืืืึทื ืขื.
ืคืื ืงืืจืก, Terraform ืืืึธืื ืืืืืื ืืึธืื ืึท ืืขืืืื-ืืื ืฉืืืฆื ืคึฟืึทืจ ื ืื-ืืึทืื ืืืื ืืืคึผืืืืืึทื ืฅ, ืึธืืขืจ ืืื ื ืืื 2019, ืื HashiCorp ืืึทื ืฉืึทืคึฟื ืืื ืงืืื ืคึผืืึทื ื ืฆื ืืืืื ืืขื ืคืึทื ืืงืฉืึทื ืึทืืืื (
ืื ืจืืืืืง ืคึผืืึทื ืงืขื ืืืื ืืืคึผืืึทืืขื ืึทื ื ืื ืืขืจืึธืื
ืืื ืื ืคึผืืึทื ืืึทืคึฟืขื ืืจืืื ืึท ืืืฉืืืืืขืก ืจืืืืืง ืืืคึผืืืืืึทื ื ืคึผืืึทื, ืึธืืขืจ ืื ืฆืืืืืื ืืึทืคึฟืขื ืงืขืจื ืึท ืืขืืช. ืคึผืจืึผืืื, ืืืฉื, ืฆื ืืืืื ืื aws_iam_user ืืืื ืืื ืื ืืขืืืข ื ืึธืืขื ืืืจ ืืขืืืืื ื ืคึฟืึทืจ ืื IAM ืืึทื ืืฆืขืจ ืืืึธืก ืืืจ ืืึธื ืืืฉืืคื ืคืจืืขืจ ืืื ืืฉืึทืคึผืืขืจ 2:
resource "aws_iam_user" "existing_user" {
# ะะพะดััะฐะฒััะต ััะดะฐ ะธะผั ัะถะต ัััะตััะฒัััะตะณะพ ะฟะพะปัะทะพะฒะฐัะตะปั IAM,
# ััะพะฑั ะฟะพะฟัะฐะบัะธะบะพะฒะฐัััั ะฒ ะธัะฟะพะปัะทะพะฒะฐะฝะธะธ ะบะพะผะฐะฝะดั terraform import
name = "yevgeniy.brikman"
}
ืืืฆื, ืืืื ืืืจ ืืืืคื ืื ืคึผืืึทื ืืึทืคึฟืขื, Terraform ืืืขื ืึทืจืืืกืคืืจื ืึท ืคึผืึธื ืขื ืืืืึทื ืืืคึผืืืืืึทื ื ืคึผืืึทื:
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 ืืืืขืจื, ืึธืืขืจ ืฆื ืึผืืขื ืงืืื ืืืื. ืขืก ืืื ืืขืืืขื ืึทื ืขืืขืฆืขืจ ืืืฉืืคื ืืขื ืืืื ืืึทื ืืืึทืื ืึธืืขืจ ื ืืฆื ืื ืืึทืคึฟืขืื ืฉืืจื, ืึธืืขืจ ืืื ืืขืืขืจ ืืืขื, ืืืึธืก ืจืืืื IDs ืคืืจื ืฆื ืงืึธื ืคืืืงื. ืขืก ืืขื ืขื ืคืืืข ืืืขืจืืืืฉืึทื ื ืคืื ืืขื ืืขืืช ืืืึธืก ืึธืคื ืืึทืคึผื ื ืืึทืงืึทืืขืจื ืฆื Terraform ืืืจื ืืืขืจืจืึทืฉื.
ืืขืจ ืฉืืืกื ืคืื ื ืืื ืึทื ืื ืืขืจืจืึทืคืึธืจื ืคึผืืึทื ืืึทืคึฟืขื ืืืืื ื ืขืื ืืื ืืฉืืื ืื ืจืขืกืืจืกื ืืืึธืก ืืขื ืขื ืกืคึผืขืกืืคืืขื ืืื ืื ืืขืจืจืึทืคืึธืจื ืฉืืึทื ืืขืงืข. ืืืื ืจืขืกืืจืกื ืืขื ืขื ืืืฉืืคื ืืื ืขืืืขืืข ืื ืืขืจืข ืืืขื (ืืืฉื, ืืึทื ืืืึทืื ืืืจื ืืขืื ืึท ืงืืืง ืืื ืื AWS ืงืึทื ืกืึธืื), ืืื ืืืขืื ื ืืฉื ืกืืฃ ืึทืจืืืฃ ืืื ืื ืฉืืึทื ืืขืงืข ืืื ืืขืจืืืขืจ ืืขืจืจืึทืคืึธืจื ืืืขื ื ืืฉื ื ืขืืขื ืืื ืืื ืืฉืืื ืืืขื ืขืงืกืึทืงืืืืื ื ืื ืคึผืืึทื ืืึทืคึฟืขื. ืืื ืึท ืจืขืืืืืึทื, ืึท ืคึผืืึทื ืืืึธืก ืืืื ื ืจืืืืืง ืืืึท ืขืจืฉืืขืจ ืืืืง ืืืขื ืืืื ื ืื ืืขืจืึธืื.
ืขืก ืืขื ืขื ืฆืืืื ืืขืงืฆืืขืก ืฆื ืืขืจื ืขื ืคืื ืืขื.
- ืืืื ืืืจ ืืึธื ืฉืืื ืกืืึทืจืืขื ืืจืืขืื ืืื Terraform, ืืึธื ื ืื ื ืืฆื ืขืคึผืขืก ืึทื ืืขืจืฉ. ืืืื ืึท ืืืื ืคืื ืืืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืื ืืขืจืืื ืืื Terraform, ืืืจ ืงืขื ืขื ื ืื ืืขืจ ืืึธืืืคืืฆืืจื ืขืก ืืึทื ืืืึทืื. ืึทื ืืขืจืฉ, ืืืจ ื ืื ืืืืื ืจืืืืงืืจื ืืฉืืื ืข ืืขืจืจืึทืคืึธืจื ืขืจืจืึธืจืก, ืึธืืขืจ ืืืจ ืืืื ืึธืคึผืฉืึทืฆื ืคืืืข ืคืื โโืื ืืขื ืขืคืืฅ ืคืื ืืึทืง ืืื ื ืื ืงืึธื ืืืขื ื ืื ืืขืจ ืืืื ืึทื ืคึผืื ืืืขื ืคืึทืจืืจืขืืื ื ืคืื ืืืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ.
- ืืืื ืืืจ ืฉืืื ืืึธืื ืขืืืขืืข ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ, ื ืืฆื ืื ืึทืจืืึทื ืคืืจ ืืึทืคึฟืขื. ืืืื ืืืจ ืึธื ืืืืื ืฆื ื ืืฆื Terraform ืืื ืืืืืกืืื ื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ, ืืืจ ืงืขื ืขื ืืืืื ืขืก ืฆื ืื ืฉืืึทื ืืขืงืข ืืื ืื ืืขืจืจืึทืคืึธืจื ืึทืจืืึทื ืคืืจ ืืึทืคึฟืขื. ืืขืจ ืืืขื, Terraform ืืืขื ืืืืกื ืืืึธืก ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืึทืจืฃ ืืืื ืืขืจืืื. ืืขืจ ืึทืจืืึทื ืคืืจ ืืึทืคึฟืขื ื ืขืื ืฆืืืื ืึทืจืืืืขื ืื. ืืขืจ ืขืจืฉืืขืจ ืืื ืื ืืืื ืึทืืจืขืก ืืื ืืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืขืก. ืืขืจ ืกืื ืืึทืงืก ืืึธ ืืื ืื ืืขืืืข ืืื ืคึฟืึทืจ ืืืื ืืื ืงืก: _. (ืืื aws_iam_user.existing_user). ืื ืฆืืืืืืข ืึทืจืืืืขื ื ืืื ืื ID ืคืื ืื ืืืื ืฆื ืืืื ืืืคึผืึธืจืืื. ืืื ืก ืืึธืื ืื ืืืื ืฉืืึทื aws_iam_user ืืื ืืขืจ ืืึทื ืืฆืขืจ ื ืึธืืขื (ืืืฉื, yevgeniy.brikman), ืืื ืื ืืืื ืฉืืึทื aws_instance ืืื ืื EC2 ืกืขืจืืืขืจ ืฉืืึทื (ืืื i-190e22e5). ืืื ืฆื ืึทืจืืึทื ืคืืจ ืึท ืืืื ืืื ืืืืฉืึทืืืึทืื ืื ืืขืืืืื ืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื ืืื ืื ืื ืึธ ืคืื ืืืึทื ืืืึทื.
ืื ืืขืจ ืืื ืึทื ืึทืจืืึทื ืคืืจ ืืึทืคึฟืขื ืืืึธืก ืกืื ืืงืจืึทื ืืืืื ืื aws_iam_user ืืืื ืืืึธืก ืืืจ ืืึธื ืฆืืืขืืขืื ืฆื ืืืื ืืขืจืจืึทืคืึธืจื ืงืึทื ืคืืืืขืจืืืฉืึทื ืฆืืืึทืืขื ืืื ืื IAM ืืึทื ืืฆืขืจ ืืื ืืฉืึทืคึผืืขืจ 2 (ืึทืืืืื ืกืึทืืกืืืืื ืืืื ื ืึธืืขื ืคึฟืึทืจ yevgeniy.brikman):
$ terraform import aws_iam_user.existing_user yevgeniy.brikman
Terraform ืืืขื ืจืืคื ืื AWS API ืฆื ืืขืคึฟืื ืขื ืืืื IAM ืืึทื ืืฆืขืจ ืืื ืฉืึทืคึฟื ืึท ืฉืืึทื ืืขืงืข ืคืึทืจืืึทื ื ืฆืืืืฉื ืขืก ืืื ืื aws_iam_user.existing_user ืืืื ืืื ืืืื ืืขืจืจืึทืคืึธืจื ืงืึทื ืคืืืืขืจืืืฉืึทื. ืคืื ืืืฆื ืืืืฃ, ืืืขื ืืืจ ืืืืคื ืื ืคึผืืึทื ืืึทืคึฟืขื, Terraform ืืืขื ืืืืกื ืึทื ืืขืจ IAM ืืึทื ืืฆืขืจ ืฉืืื ืืืืืกืฅ ืืื ืืืขื ื ืืฉื ืคึผืจืืืืจื ืฆื ืืึทืื ืขืก ืืืืืขืจ.
ืขืก ืืื ืืืื ืฆื ืืืืขืจืงื ืึทื ืืืื ืืืจ ืฉืืื ืืึธืื ืึท ืคึผืืึทืฅ ืคืื ืจืขืกืืจืกื ืึทื ืืืจ ืืืืื ืฆื ืึทืจืืึทื ืคืืจ ืืื Terraform, ืืึทื ืืืึทืื ืฉืจืืืื ืื ืงืึธื ืืื ืืืคึผืึธืจืืื ื ืืขืืขืจ ืืืื ืขืจ ืืื ืึท ืฆืืื ืงืขื ืขื ืืืื ืึท ืืึทืกืึทื. ืึทืืื ืขืก ืืื ืืืขืจื ืฆื ืงืืงื ืืื ืึท ืืขืฆืืึทื ืืื Terraforming (http://terraforming.dtan4.net/), ืืืึธืก ืงืขื ืขื ืืืืืึธืืึทืืืฉ ืึทืจืืึทื ืคืืจ ืงืึธื ืืื ืฉืืึทื ืคึฟืื ืืืื AWS ืืฉืืื.
ืจืขืคืึทืงืืืจืื ื ืงืขื ืขื ืืึธืื ืืืึทื ืคึผืืืคืึธืื
ืจืขืคืึทืงืืืจืื ื ืืื ืึท ืคึผืจืึธืกื ืคืืจ ืืื ืคึผืจืึธืืจืึทืืืื ื ืืื ืืืจ ืืืืฉื ืื ืื ืขืจืืขื ืกืืจืืงืืืจ ืคืื ืื ืงืึธื ืืฉืขืช ืืืจ ืืึธืื ืื ืคืื ืืจืืืกื ืืืง ื ืึทืืืจ ืึทื ืืฉืืื ืืืฉื. ืืึธืก ืืื ืฆื ืืึทืื ืื ืงืึธื ืงืืืจืขืจ, ื ืืืขืจ ืืื ืืจืื ืืขืจ ืฆื ืืืึทื ืขื. ืจืขืคืึทืงืืืจืื ื ืืื ืึท ืื ืืืกืคึผืขื ืกืึทืืึทื ืืขืื ืืง ืืืึธืก ืืึธื ืืืื ืืขืืืืื ื ืงืขืกืืืืขืจ. ืึธืืขืจ ืืืขื ืขืก ืงืืื ืฆื ืืขืจืจืึทืคืึธืจื ืึธืืขืจ ืงืืื ืื ืืขืจืข ืืึทืง ืืขืฆืืึทื, ืืืจ ืืืื ืืืื ืืึธืจ ืึธืคึผืืขืืื ืืืขืื ืืืึธืก ืืืจ ืืืื ืขื ืืื ืื "ืคืื ืืจืืืกื ืืืง ื ืึทืืืจ" ืคืื ืึท ืฉืืืง ืคืื ืงืึธื, ืึทื ืืขืจืฉ ืืืืืขืจืืื ืคึผืจืึธืืืขืืก ืืืขื ืืืืคืฉืืืื.
ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืึท ืคึผืจืึธืกื ืืืคึผ ืคืื ืจืขืคืึทืงืืึธืจืื ื ืืื ืจืืคึผืืืืกืื ื ืื ื ืขืืขื ืคืื ืืืขืจืืึทืืึทืื ืึธืืขืจ ืคืึทื ืืงืฉืึทื ื ืืื ืืขืจ ืคืึทืจืฉืืืืืง ืึธื ืขืก. ืคืืืข IDEs ืืึธืื ืึท ืืขืืืื-ืืื ืฉืืืฆื ืคึฟืึทืจ ืจืขืคืึทืงืืึธืจืื ื ืืื ืงืขื ืขื ืืืืืึธืืึทืืืฉ ืจืขื ืึทืืข ืืืขืจืืึทืืึทืื ืืื ืคืึทื ืืงืฉืึทื ื ืืืืขืจ ืื ืคึผืจืืืขืงื. ืืื ืึทืืืขืืืื-ืฆืืืขืง ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทืื, ืืึธืก ืืื ืึท ื ืืฉืืืง ืคึผืจืึธืฆืขืืืจ ืืืึธืก ืืืจ ืงืขื ื ืืฉื ืืจืึทืืื ืืืขืื, ืึธืืขืจ ืืื Terraform ืืืจ ืืืื ืืืื ืืึธืจ ืึธืคึผืืขืืื ืืื ืืขื, ืึทื ืืขืจืฉ ืืืจ ืงืขื ืืขืจืคืึทืจืื ื ืึทืืืึทืืืฉืึทื.
ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืื ืืืขืืกืขืจืืืขืจ-ืงื ืืื ืืึธืืืืข ืืื ืึทื ืึทืจืืึทื ืฉืจืืึทื ืืืึทืืขืืืืืง cluster_name:
variable "cluster_name" { description = "The name to use for all the cluster resources" type = string }
ืืืึทืืืฉืึทื ืึทื ืืืจ ืกืืึทืจืืขื ื ืืฆื ืืขื ืืึธืืืืข ืฆื ืฆืขืืืืงืืขื ืึท ืืืงืจืึธ ืกืขืจืืืืก ืืขืจืืคึฟื ืคืึธืึธ. ืฉืคึผืขืืขืจ, ืืืจ ืืืืื ืฆื ืจืขื ืึทืืข ืืืื ืืื ืกื ืฆื ืืึทืจ. ืืขืจ ืขื ืืขืจืื ื ืงืขื ืืืกืงืืืขื ื ืืฉืืืง, ืึธืืขืจ ืืื ืคืึทืงื ืขืก ืงืขื ืคืึทืจืฉืึทืคื ืกืขืจืืืืก ืืืกืจืึทืคึผืฉืึทื ื.
ืืขืจ ืคืึทืงื ืืื ืึทื ืื ืืืขืืกืขืจืืืขืจ-ืงื ืืื ืืึธืืืืข ื ืืฆื ืื cluster_name ืืืึทืืขืืืืืง ืืื ืึท ื ืืืขืจ ืคืื ืจืขืกืืจืกื, ืึทืจืืึทื ืืขืจืขืื ื ืื ื ืึธืืขื ืคึผืึทืจืึทืืขืืขืจ ืคืื ืฆืืืื ืืืืขืจืืืื ืืจืืคึผืขืก ืืื ืื ALB:
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] }
ืืืื ืืืจ ืืืืฉื ืื ื ืึธืืขื ืคึผืึทืจืึทืืขืืขืจ ืืืืฃ ืึท ืืืื, Terraform ืืืขื ืืืกืืขืงื ืื ืึทืื ืืืขืจืกืืข ืคืื โโโโืืขื ืืืื ืืื ืฉืึทืคึฟื ืึท ื ืืึทืข ืืื ืืืื ืึธืจื. ืึธืืขืจ ืืืื ืื ืืืื ืืื ืึทื ALB, ืฆืืืืฉื ืืืืืืื ื ืขืก ืืื ืืึทืื ืืึธืืืื ื ืึท ื ืืึทืข ืืืขืจืกืืข, ืืืจ ืืืขื ื ืืฉื ืืึธืื ืึท ืืขืงืึทื ืืืึทื ืฆื ืจืืืขืจืขืงื ืคืึทืจืงืขืจ ืฆื ืืืื ืืืขื ืกืขืจืืืขืจ. ืคึผืื ืงื ืึทืืื, ืืืื ืึท ืืืืขืจืืืื ืืจืืคึผืข ืืื ืืืืกืืขืืขืงื, ืืืื ืกืขืจืืืขืจืก ืืืขืื ืึธื ืืืืื ืฆื ืึธืคึผืืืึทืจืคื ืงืืื ื ืขืฅ ืคืึทืจืงืขืจ ืืื ืึท ื ืืึทืข ืืจืืคึผืข ืืื ืืืฉืืคื.
ืื ืื ืืขืจ ืืืคึผ ืคืื ืจืขืคืึทืงืืึธืจืื ื ืืืจ ืงืขื ืืืื ืืื ืืขืจืขืกืืจื ืืื ืืื ืืฉืึทื ืืื ื ืื Terraform ID. ืืึธืืืจ ื ืขืืขื ืื aws_security_group ืืืื ืืื ืื ืืืขืืกืขืจืืืขืจ-ืงื ืืื ืืึธืืืืข ืืื ืึท ืืืืฉืคึผืื:
resource "aws_security_group" "instance" { # (...) }
ืืขืจ ืืืืขื ืืืคืืฆืขืจ ืคืื ืืขื ืืืื ืืื ืืขืจืืคื ืืืฉื. ืืืึทืืืฉืึทื ืึทื ืืขืฉืึทืก ืจืขืคืึทืงืืึธืจืื ื ืืืจ ืืึทืฉืืึธืกื ืฆื ืืืืฉื ืขืก ืฆื ืึท ืืขืจ ืคืึทืจืฉืืืืืง (ืืื ืืืื ืืืื ืื ื) ื ืึธืืขื cluster_instance:
resource "aws_security_group" "cluster_instance" { # (...) }
ืืืึธืก ืืืขื ืคึผืึทืกืืจื ืืื ืื ืกืืฃ? ืึทื ืก ืจืขืื: ืึท ืืืกืจืึทืคึผืฉืึทื.
Terraform ืึทืกืกืึธืกืืึทืืขืก ืืขืืขืจ ืืืื ืฉืืึทื ืืื ืื ืืืึธืืงื ืฉืคึผืืึทืืขืจ ืฉืืึทื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, iam_user ืืื ืคึฟืึทืจืืื ืื ืืื ืื AWS IAM ืืึทื ืืฆืขืจ ืฉืืึทื, ืืื aws_instance ืืื ืคึฟืึทืจืืื ืื ืืื ืื AWS EC2 ืกืขืจืืืขืจ ืฉืืึทื. ืืืื ืืืจ ืืืืฉื ืื ืืืื ืฉืืึทื (ืืึธืื ืคืื ืืืึทืฉืคึผืื ืฆื cluster_instance, ืืื ืืื ืืขืจ ืคืึทื ืืื aws_security_group), ืฆื ืืขืจืจืึทืคืึธืจื ืขืก ืืืขื ืืขืจืฉืืึทื ืขื ืืื ืืืื ืืืจ ืืืืกืืขืืขืงื ืื ืึทืื ืืืื ืืื ืฆืืืขืืขืื ืึท ื ืืึทืข. ืืืื ืืืจ ืฆืืืืืื ืื ืขื ืืขืจืื ืืขื, Terraform ืืืขื ืืืกืืขืงื ืื ืึทืื ืืืืขืจืืืื ืืจืืคึผืข ืืื ืฉืึทืคึฟื ืึท ื ืืึทืข, ืืฉืขืช ืืืื ืกืขืจืืืขืจืก ืึธื ืืืืื ืฆื ืึธืคึผืืืึทืจืคื ืงืืื ื ืขืฅ ืคืึทืจืงืขืจ.
ืืึธ ืืขื ืขื ืคืืจ ืฉืืืกื ืืขืงืฆืืขืก ืืืจ ืืึธื ื ืขืืขื ืึทืืืขืง ืคืื ืืขื ืืืกืงืืกืืข.
- ืฉืืขื ืืืง ื ืืฆื ืื ืคึผืืึทื ืืึทืคึฟืขื. ืขืก ืงืขื ืขื ืึทื ืืืขืงื ืึทืืข ืื ืกื ืึทืื. ืืืืขืจืืืืง ืืืื ืคึผืจืึธืืืงืฆืืข ืงืขืจืคืึทืื ืืื ืืืืื ื ืฆื ืกืืืืึทืืืึธื ืก ืืื Terraform ืคึผืืึทื ื ืฆื ืืืกืืขืงื ืจืขืกืืจืกื ืืืึธืก ืจืืึฟ ืืกืชึผืื ืืึธื ื ืื ืืืื ืืืืกืืขืืขืงื.
- ืฉืึทืคึฟื ืืืืืขืจ ืืืจ ืืืกืืขืงื. ืืืื ืืืจ ืืืืื ืฆื ืคืึทืจืืืึทืื ืึท ืืืื, ืืจืึทืืื ืงืขืจืคืึทืื ืฆื ืืืจ ืืึทืจืคึฟื ืฆื ืฉืึทืคึฟื ืึท ืคืึทืจืืืึทื ืืืืืขืจ ืืืืืืื ื ืื ืึธืจืืืื ืขื. ืืืื ืืขืจ ืขื ืืคืขืจ ืืื ืืึธ, create_before_destroy ืงืขื ืขื ืืขืืคึฟื. ืืขืจ ืืขืืืืงืขืจ ืจืขืืืืืึทื ืงืขื ืขื ืืืื ืึทืืฉืืืื ืืึทื ืืืึทืื ืืืจื ืืืจืืคืืจื ืฆืืืื ืกืืขืคึผืก: ืขืจืฉืืขืจ ืืืืื ืึท ื ืืึทืข ืืืื ืฆื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืืืืคื ืื ืฆืืืืืื ืืึทืคึฟืขื, ืืื ืืึทื ืึทืจืึธืคึผื ืขืืขื ืื ืึทืื ืืืื ืคืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ื ืืฆื ืื ืฆืืืืืื ืืึทืคึฟืขื ืืืืืขืจ.
- ืืฉืึทื ืืื ื ืืืขื ืืืคืืขืจืก ืจืืงืืืืืขืจื ืืฉืึทื ืืื ื ืฉืืึทื. ืืืื ืืืจ ืืืืื ืฆื ืืืืฉื ืื ืฉืืึทื ืคึฟืึทืจืืื ืื ืืื ืึท ืืืื (ืืืฉื, ืจืขื ืึทืืข aws_security_group ืคึฟืื ืืืึทืฉืคึผืื ืฆื cluster_instance) ืึธื ืืืกืืขืงื ืื ืืืื ืืื ืฉืึทืคึฟื ืึท ื ืืึทืข ืืืขืจืกืืข ืคืื โโืขืก, ืืืจ ืืืื ืืขืจืืืึทื ืืืงื ืื ืืขืจืจืึทืคืึธืจื ืฉืืึทื ืืขืงืข ืึทืงืึธืจืืื ืืื. ืงืืื ืืึธื ืืึธื ืืึธืก ืืึทื ืืืึทืื - ื ืืฆื ืื ืืขืจืจืึทืคืึธืจื ืฉืืึทื ืืึทืคึฟืขื ืึทื ืฉืืึธื. ืืืขื ืจืื ืืืืื ื ืืืขื ืืืคืืขืจืก, ืืืจ ืืึธื ืืืืคื ืื ืืขืจืจืึทืคืึธืจื ืฉืืึทื mv ืืึทืคึฟืขื, ืืืึธืก ืืื ืื ืคืืืืขื ืืข ืกืื ืืึทืงืก:
terraform state mv <ORIGINAL_REFERENCE> <NEW_REFERENCE>
ORIGINAL_REFERENCE ืืื ืึทื ืืืืกืืจืืง ืืืึธืก ืจืขืคืขืจืก ืฆื ืื ืืืื ืืื ืืืื ืงืจืึทื ื ืคืึธืจืขื, ืืื NEW_REFERENCE ืืื ืืื ืืืจ ืืืืื ืฆื ืืึทื ืขืก. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืขื ืจืื ืืืืื ื ืื aws_security_group ืืจืืคึผืข ืคืื โโืืืึทืฉืคึผืื ืฆื cluster_instance, ืืืจ ืืึทืจืคึฟื ืฆื ืืืืคื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื:
$ terraform state mv aws_security_group.instance aws_security_group.cluster_instance
ืืึธืก ืืขืจืฆืืืื Terraform ืึทื ืื ืฉืืึทื ืืืึธืก ืืื ืืขืืืขื ืคืจืืขืจ ืคืืจืืื ืื ืืื aws_security_group.instance ืืึธื ืืืฆื ืืืื ืคืืจืืื ืื ืืื aws_security_group.cluster_instance. ืืืื ื ืึธื ืจืื ืืืืื ื ืืื ืคืืืกื ืืืง ืืขื ืืึทืคึฟืขื ืืขืจืจืึทืคืึธืจื ืคึผืืึทื ืืื ื ืืฉื ืืืืึทืื ืงืืื ืขื ืืขืจืื ืืขื, ืืืจ ืืึธื ืึทืืฅ ืจืืืืืง.
- ืขืืืขืืข ืกืขืืืื ืืก ืงืขื ืขื ื ืื ืืืื ืืขืืืื. ืื ืคึผืึทืจืึทืืขืืขืจืก ืคืื ืคืืืข ืจืขืกืืจืกื ืืขื ืขื ืึทื ืืฉืืื ืืืฉื. ืืืื ืืืจ ืคึผืจืืืืจื ืฆื ืืืืฉื ืืื, Terraform ืืืขื ืืืกืืขืงื ืื ืึทืื ืืืื ืืื ืฉืึทืคึฟื ืึท ื ืืึทืข ืืื ืืืื ืึธืจื. ืืขืืขืจ ืืืื ืืืึทื ืืืขื ืืืืฉืึทืืืึทืื ืึธื ืืืืึทืื ืืืึธืก ืืึทืคึผืึทื ื ืืืขื ืืืจ ืืืืฉื ืึท ืืึทืืื ืืขืจ ืืึทืฉืืขืืืงื, ืึทืืื ืืืื ืืืืขืจ ืฆื ืงืึธื ืืจืึธืืืจื ืื ืืึทืงืืืืขื ืืืืฉืึทื. ืฉืืขื ืืืง ื ืืฆื ืื ืคึผืืึทื ืืึทืคึฟืขื ืืื ืืึทืืจืึทืืื ื ืืฆื ืื create_before_destroy ืกืืจืึทืืขืืืข.
ืืืคืขืจื ืงืึธื ืกืืกืืขื ืกื ืืื ืงืึธื ืกืืกืืขื ื ... ืืื ืืืคืขืจืึทื
ืขืืืขืืข ืืืึธืืงื ืคึผืจืึทืืืืืืขืจื 'ืึทืคึผืืก, ืึทืืึท ืืื AWS, ืืขื ืขื ืืืกืื ืืงืจืึทื ืึทืก ืืื ืืึธืื ืืืืืื ืงืึธื ืกืืกืืขื ืกื. ืึทืกืื ืืฉืจืึธื ื ืืืื ืึทื ืื ืฆืืืื ื ืงืขื ืขื ืืืืื ืฆืืจืืงืงืืืขื ืึท ืขื ืืคืขืจ ืึธื ืืืืจืื ืคึฟืึทืจ ืื ืืขืืขืื ืงืึทืืฃ ืฆื ืคืึทืจืขื ืืืงื. ืืืืืื ืงืึธื ืกืืกืืขื ืกื ืืืื ืึทื ืขื ืืขืจืื ืืขื ืงืขื ื ืขืืขื ืฆืืื ืฆื ืคืึทืจืฉืคึผืจืืืื ืืืืขืจ ืื ืกืืกืืขื; ืืฉืขืช ืืึธืก ืืื ืืขืฉืขืขื ืืฉ, ืืืื ืจืขืกืคึผืึธื ืกืขืก ืงืขื ืืืื ืกืชืืจื ืืื ืึธืคืขื ืืืง ืืืืฃ ืืืึธืก ืืึทืื ืืงืืจ ืจืขืคึผืืืงืข ืจืืกืคึผืึทื ื ืฆื ืืืื ืึทืคึผื ืจืืคื.
ืืืึทืืืฉืึทื, ืืืฉื, ืึทื ืืืจ ืืึทืื ืึท ืึทืคึผื ืจืืคื ืฆื AWS ืืื ืืขืื ืขืก ืฆื ืฉืึทืคึฟื ืึทื EC2 ืกืขืจืืืขืจ. ืื ืึทืคึผื ืืืขื ืฆืืจืืงืงืืืขื ืึท "ืืขืจืึธืื" ืขื ืืคืขืจ (201 ืืืฉืืคื) ืึผืืขื ืืืืงืขืฃ, ืึธื ืืืืจืื ืคึฟืึทืจ ืื ืกืขืจืืืขืจ ืืื ืฆื ืืืื ืืืฉืืคื. ืืืื ืืืจ ืคึผืจืืืืจื ืฆื ืคืึทืจืืื ืื ืฆื ืขืก ืืืืื, ืขืก ืืืขื ืึผืืขื ืืืืขืจ ืืืจืืคืึทื ืืืืึทื ืืื ืืขื ืคืื ื AWS ืืื ื ืึธื ืื ืืืืึทืืืืื ื ืจืขืกืืจืกื ืึธืืขืจ, ืึทืืืขืจื ืึทืืืืืขืื, ืืขืจ ืกืขืจืืืขืจ ืืื ื ืืฉื ื ืึธื ืืืืื. ืืขืจืฆื, ืืืื ืืืจ ืืึทืื ืื ืื ืืขืจ ืจืืคื ืฆื ืืึทืงืืืขื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืขื ืกืขืจืืืขืจ, ืืืจ ืงืขื ืืึทืงืืืขื ืึท ืืขืืช (404 ื ืื ืืขืคึฟืื ืขื). ืื ืืึทื ืืื ืึทื ืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืขื EC2 ืกืขืจืืืขืจ ืงืขื ื ืึธื ืืืื ืคึผืจืึทืคึผืึทืืืืืื ืืืืขืจ AWS ืืืืืขืจ ืขืก ืืืขืจื ืื ืืืฆื ืืืืขืืื, ืืืจ ืืืขื ืืึธืื ืฆื ืืืึทืจืื ืึท ืืืกื ืกืขืงืื ืืขืก.
ืืืขื ืืืจ ื ืืฆื ืึท ืืืกืื ืืงืจืึทื ืึทืก ืึทืคึผื ืืื ืคืืื ืงืึธื ืกืืกืืขื ืกื, ืืืจ ืืืื ืคึผืืจืืึทืืืงืื ืคึผืจืืืืจื ืืืื ืืงืฉื ืืื ืื ืึทืงืฆืืข ืงืึทืืคึผืืืฅ ืืื ืคึผืจืึทืคึผืึทืืืืฅ ืืืจื ืื ืกืืกืืขื. ืฆืื ืืึทืืืืขืจื, ืื 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
ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืืืจ ืืึทืื ืึท ืืืื (ืืื ืึท ืกืืื ืขื) ืืื ืืขืืึธืื ืคึผืจืืืืจื ืฆื ืืึทืงืืืขื ืขืืืขืืข ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืื (ืืื ืื ืฉืืึทื ืคืื ืื ื ืื ืืืฉืืคื ืกืืื ืขื) ืืื Terraform ืงืขื ื ืืฉื ืืขืคึฟืื ืขื ืขืก. ืจืืึฟ ืคืื ืื ืืึทืื (ืึทืจืืึทื ืืขืจืขืื ื 6813) ืืขื ืขื ืคืึทืจืคืขืกืืืงื, ืึธืืขืจ ืืื ื ืึธื ืืขืจืขืืขื ืืฉ ืคืื ืฆืืื ืฆื ืฆืืื, ืกืคึผืขืฆืืขื ืืืขื Terraform ืืืกืืฃ ืฉืืืฆื ืคึฟืึทืจ ืึท ื ืืึทืข ืืืื ืืืคึผ. ืืึธืก ืืื ืึทื ืืืื ื, ืึธืืขืจ ืืื ืจืืึฟ ืงืึทืกืขืก ืืื ื ืืฉื ืืจืื ื ืงืืื ืฉืึธืื. ืืืขื ืืืจ ืืืืคื ืืขืจืจืึทืคืึธืจื ืฆืืืืืื ืืืืืขืจ, ืึทืืฅ ืืึธื ืึทืจืืขืื, ืืืืึทื ืืื ืืขื ืฆืืึทื ืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขื ืืึธืื ืฉืืื ืคืึทืจืฉืคึผืจืืืื ืืืืขืจ ืื ืกืืกืืขื.
ืืขืจ ืืึธืืืงืขืจ ืืืืกืฆืื ืืืขืจื ืืขืจืืึทื ืื ืคึฟืื ืขื ืืื ืคึฟืื ืขืืืืขื ื ืืจืืงืืึทื
"ืืขืจืจืึทืคืึธืจื: ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืืืฃ ืื ืงืึธื ืืืจืื" .
ืืงืืจ: www.habr.com