amazon-web-services - 如何获取 AWS Autoscaling 启动实例的 pem 文件

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

我有一个 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文件,首先:

  • 生成新的 key 对。见 Amazon EC2 Key Pairs .执行此操作后,您将能够下载 .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/

    相关文章:

    python - 返回BadRequestError实例时引发酒杯 “BadRequestError is not JSON serializable”异常

    mysql - Amazon S3 - 以编程方式创建目录结构

    amazon-web-services - 如何在没有提示的情况下在没有交互的情况下自动在 Amazon AWS EC2 上运行 aws configure?

    windows - 如何在没有 Chef 服务器的情况下运行 Chef ( Chef solo/Chef 零)

    java - 用 Java 进行模板化邮件合并

    amazon-web-services - 使用 IAM 角色运行 Spark EC2 脚本

    python - AWS Lambda 不导入 Asyncio

    linux - 无法在用户数据部分中 git clone 作为 ec2-user

    ubuntu - 如何使用 Chef 在 Ubuntu 14.04 上安装 Jenkins LTS 1.651.3

    python - 通过 Chef Recipe 激活 virtualenv 并安装 python 库