如何获取 AWS Autoscaling 启动实例的 pem 文件
How to get pem file for AWS Autoscaling launched instance
我有一个 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}"
}
我需要避免使用 Amazon CLI
或网页本身 - 关键是要自动化以便在我的所有其他解决方案中重用。
用于 RDS/SSH EC2 实例的 .pem
文件不会在 EC2 实例启动期间生成。使用AWS管理控制台时可能看起来像这样,但实际上是先生成密钥对,然后在启动时将密钥对分配给EC2实例。
要获取您的 .pem
文件,首先:
- 生成新的密钥对。参见 Amazon EC2 Key Pairs。执行此操作后,您将能够下载
.pem
文件。
- 使用
key_name
参数将该密钥对分配给您的 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
我有一个 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}"
}
我需要避免使用 Amazon CLI
或网页本身 - 关键是要自动化以便在我的所有其他解决方案中重用。
用于 RDS/SSH EC2 实例的 .pem
文件不会在 EC2 实例启动期间生成。使用AWS管理控制台时可能看起来像这样,但实际上是先生成密钥对,然后在启动时将密钥对分配给EC2实例。
要获取您的 .pem
文件,首先:
- 生成新的密钥对。参见 Amazon EC2 Key Pairs。执行此操作后,您将能够下载
.pem
文件。 - 使用
key_name
参数将该密钥对分配给您的 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