首页 > 解决方案 > terraform:使用给定的公钥添加操作系统用户

问题描述

我使用 terraform 在 AWS 上创建了一个 EC2 实例;

我想要的是在操作系统级别添加一个用户并提供一个要添加到其~/.ssh/authorized_keys文件中的特定密钥。

aws_instance文档似乎没有列出此功能。

有没有办法解决这个问题?

编辑:我认为一种方法是通过remote-exec供应商,但由于我已经创建了我的 ec2 资源,我需要一种强制运行它的方法;

标签: amazon-web-servicesamazon-ec2terraform

解决方案


跟进评论和编辑,您正在寻找的内容可能如下所示:

resource "aws_instance" "default" {
  ...
  provisioner "remote-exec" {
    inline = [
      "sudo useradd someuser"
    ]

    connection {
      type        = "ssh"
      user        = "ubuntu"
      private_key = "${file("yourkey.pem")}"
    }
  }

  provisioner "file" {
    source      = "authorized_keys"
    destination = "/home/someuser/.ssh/authorized_keys"

    connection {
      type        = "ssh"
      user        = "ubuntu"
      private_key = "${file("yourkey.pem")}"
    }
  }

  provisioner "remote-exec" {
    inline = [
      "sudo chown someuser:someuser /home/someuser/.ssh/authorized_keys",
      "sudo chmod 0600 /home/someuser/.ssh/authorized_keys"
    ]

    connection {
      type        = "ssh"
      user        = "ubuntu"
      private_key = "${file("yourkey.pem")}"
    }
  }
  ...
}
  • 创建用户
  • 上传您的授权密钥文件
  • 为用户设置文件的适当权限

您也可以remote-exec根据您要如何处理设置authorized_keys文件来一次性完成所有操作


推荐阅读