我有一个 Terraform
启动脚本 VPC
、子网、数据库、自动缩放和其他一些东西。自动缩放使用默认的 Windows Server 2012 R2 镜像来启动新实例(包括初始实例)。每个实例都在执行 Chef
启动后安装。我需要登录实例,以便确认 Chef
已安装,但我没有任何 .pem
键。我如何使用 Autoscaling
启动实例和 launch_configuration
和输出 .pem
文件以便我以后可以登录?
这是我的脚本自动缩放部分:
resource "aws_autoscaling_group" "asgPrimary" {
depends_on = ["aws_launch_configuration.primary"]
availability_zones = ["${data.aws_availability_zones.available.names[0]}"]
name = "TerraformASGPrimary"
max_size = 1
min_size = 1
wait_for_capacity_timeout = "0"
health_check_grace_period = 300
health_check_type = "ELB"
desired_capacity = 1
force_delete = false
wait_for_capacity_timeout = "0"
vpc_zone_identifier = ["${aws_subnet.private_primary.id}"]
#placement_group = "${aws_placement_group.test.id}"
launch_configuration = "${aws_launch_configuration.primary.name}"
load_balancers = ["${aws_elb.elb.name}"]
}
这是我的启动配置:
resource "aws_launch_configuration" "primary" {
depends_on = ["aws_subnet.primary"]
name = "web_config_primary"
image_id = "${data.aws_ami.amazon_windows_2012R2.id}"
instance_type = "${var.ami_type}"
security_groups = ["${aws_security_group.primary.id}"]
user_data = "${template_file.user_data.rendered}"
}
我需要避免使用亚马逊
CLI
或网页本身 - 重点是在我的所有其他解决方案中重用自动化。
最佳答案
.pem
用于 RDS/SSH 到 EC2 实例的文件不会在 EC2 实例启动期间生成。使用 AWS 管理控制台时可能看起来像这样,但实际上,首先生成 key 对,然后在启动期间将该 key 对分配给 EC2 实例。
获取您的 .pem
文件,首先:
.pem
文件。 key_name
将该 key 对分配给 Auto Scaling 组的启动配置争论。 下面是一个例子:
resource "aws_launch_configuration" "primary" {
depends_on = ["aws_subnet.primary"]
name = "web_config_primary"
image_id = "${data.aws_ami.amazon_windows_2012R2.id}"
instance_type = "${var.ami_type}"
security_groups = ["${aws_security_group.primary.id}"]
user_data = "${template_file.user_data.rendered}",
key_name = "my-key-pair"
}
见:https://www.terraform.io/docs/providers/aws/r/launch_configuration.html#key_name
关于amazon-web-services - 如何获取 AWS Autoscaling 启动实例的 pem 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43610123/