Terraform:digitalocean上的自定义用户身份验证

时间:2017-05-22 14:09:30

标签: digital-ocean terraform

使用vagrant,我可以使用自定义用户设置Droplet:

config.ssh.username = 'living'
config.ssh.private_key_path = "./keys/qa.openssh"

目前,我正在使用terraform。不过我还没有弄清楚如何设置自定义用户而不是root

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以通过以下几种方式解决此问题:

1:使用Terraform配置程序创建您的用户:

Terraform附带了许多配置程序,可让您对其为您创建的资源执行配置操作。在这种情况下,最适合您的是remote-exec供应商。实质上,这只允许您在远程资源上运行一个或多个shell命令。使用它,您可以简单地应用典型的Unix命令来创建living用户并为它们添加正确的SSH密钥(或者甚至将调用委托给真正的配置工具,如Ansible或Chef)。它可能看起来像这样:

provisioner "remote-exec" {
  inline = [
    "adduser living",
    "..."
  ]
}

您也可以使用file配置文件来复制配置文件,甚至是chef配置文件。

配置者需要记住的是,只有在创建资源时才会运行一次。

2:使用正确的SSH配置创建计算机映像

另一种方法是为Droplet创建一个具有基本SSH配置和用户已设置的映像。这样,您只需要求Terraform创建已知具有正确配置的资源。这就是我们所说的不可变基础设施。

例如,您可以使用Packer(也来自Hashicorp)来创建已创建living用户的Droplet。 Packer基本上是一个用于创建机器映像的工具,包括AWS和DigitalOcean等众多提供商。

为Droplet创建新图像后,只需更新Terraform资源定义即可确保启动正确的图像。

鉴于选择,我个人会选择2,因为我更喜欢不可变的基础设施路线。但是如果你只是玩Terraform,那么选项1就可以了。