2017-04-25 68 views
2

我有一个Terraform脚本启动VPC,子网,数据库,自动缩放等一些东西。自动缩放使用默认的Windows Server 2012 R2映像来启动新的实例(包括最初的实例)。每个实例在启动后都会执行Chef安装。我需要登录到实例,所以我可以确认Chef已安装,但我没有任何.pem密钥。我如何使用Autoscalinglaunch_configuration启动实例并输出.pem文件,以便我可以登录后? 这里是脚本我自动缩放部分:如何获得pem文件的AWS Autoscaling启动实例

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或网页本身 - 点是所有被自动化在所有其他解决方案中重复使用。

回答

0

在启动EC2实例期间,不会生成用于RDS/SSH到EC2实例的.pem文件。在使用AWS管理控制台时可能会出现这种情况,但实际上首先生成密钥对,然后在启动期间将该密钥对分配给EC2实例。

为了让您的.pem文件,第一:

  1. 生成一个新的密钥对。请参阅Amazon EC2 Key Pairs。当你这样做时,你将能够下载.pem文件。
  2. 使用key_name参数将该密钥对分配给Auto Scaling Group的启动配置。

下面是一个例子:

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