TerraformにてUserDataにcloud-initを設定する方法でSSH公開鍵を authorized_keys
に設定する方法を記載します。
variables
に公開鍵を list(string)
で受けるように設定し、tfvars
にもリスト形式で設定しておきます。
variable.tf
variable "ssh_authorized_keys" {
type = list(string)
}
ssh_authorized_keys = [
"ssh-rsa xxxxx",
"ssh-rsa yyyyy",
]
後はyamlencode関数で受ければOKです。
ec2.tf
resource "aws_instance" "instance" {
# 省略
user_data = <<EOF
Content-Type: multipart/mixed; boundary="==BOUNDARY=="
MIME-Version: 1.0
--==BOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
#cloud-config
${yamlencode({ "ssh_authorized_keys" : var.ssh_authorized_keys })}
EOF
}
参考