使用vagrant,我可以使用自定义用户设置Droplet:
config.ssh.username = 'living'
config.ssh.private_key_path = "./keys/qa.openssh"
目前,我正在使用terraform
。不过我还没有弄清楚如何设置自定义用户而不是root
。
有什么想法吗?
答案 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就可以了。