Necesito almacenar una clave privada en AWS. Porque cuando creo una instancia ec2 desde AWS, necesito usar esta clave principal para autenticarme en el aprovisionador "remote-exec". No quiero guardar en el repositorio AWS.
¿Es una buena idea guardar una clave privada en Secret Manager? ¿Y luego consumirlo?
Y en caso afirmativo, ¿Cómo guardar la clave principal en Secret Manager y luego recuperarla en TF aws_secretsmanager_secret_version?
En mi caso, si valido desde un archivo (), funciona, pero si valido desde una cadena, falla.
connection { host = self.private_ip type = "ssh" user = "ec2-user" #private_key = file("${path.module}/key") <-- Is working private_key = jsondecode(data.aws_secretsmanager_secret_version.secret_terraform.secret_string)["ec2_key"] <-- not working. Error: Failed to read ssh private key: no key found }Creo que la razón se debe a cómo lo almacenas. Verifiqué usando mi propia cuenta de sandbox el uso de aws_secretsmanager_secret_version y funciona. Sin embargo, lo almacené como texto doloroso, no como json:
Luego lo usé con éxito de la siguiente manera para una instancia:
resource "aws_instance" "public" { ami = "ami-02354e95b39ca8dec" instance_type = "t2.micro" key_name = "key-pair-name" security_groups = [aws_security_group.ec2_sg.name] provisioner "remote-exec" { connection { type = "ssh" user = "ec2-user" private_key = data.aws_secretsmanager_secret_version.example.secret_string host = "${self.public_ip}" } inline = [ "ls -la" ] } depends_on = [aws_key_pair.key] }