【问题标题】:How to get pem file for AWS Autoscaling launched instance如何获取 AWS Autoscaling 启动实例的 pem 文件
【发布时间】:2017-09-22 10:27:15
【问题描述】:

我有一个启动VPC、子网、数据库、自动缩放和其他一些东西的Terraform 脚本。自动缩放使用默认的 Windows Server 2012 R2 映像来启动新实例(包括初始实例)。每个实例在启动后都在执行Chef install。我需要登录实例,以便确认已安装Chef,但我没有任何.pem 密钥。如何使用Autoscalinglaunch_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 或网页本身 - 关键是要在我的所有其他解决方案中自动重复使用。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 chef-infra terraform


    【解决方案1】:

    用于 RDS/SSH 进入 EC2 实例的 .pem 文件不会在 EC2 实例启动期间生成。使用 AWS 管理控制台时可能看起来像这样,但实际上是先生成密钥对,然后在启动期间将该密钥对分配给 EC2 实例。

    要获取您的.pem 文件,首先:

    1. 生成新的密钥对。见Amazon EC2 Key Pairs。执行此操作后,您将能够下载 .pem 文件。
    2. 使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 2019-07-02
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多