Terraform peut générer SSL/SSH clés privées de l'aide de l' tls_private_key
des ressources.
Donc si vous voulez générer des clés SSH à la volée, vous pourriez faire quelque chose comme ceci:
variable "key_name" {}
resource "tls_private_key" "example" {
algorithm = "RSA"
rsa_bits = 4096
}
resource "aws_key_pair" "generated_key" {
key_name = "${var.key_name}"
public_key = "${tls_private_key.example.public_key_openssh}"
}
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
owners = ["099720109477"] # Canonical
}
resource "aws_instance" "web" {
ami = "${data.aws_ami.ubuntu.id}"
instance_type = "t2.micro"
key_name = "${aws_key_pair.generated_key.key_name}"
tags {
Name = "HelloWorld"
}
}
Cela va créer une paire de clés SSH, qui vit dans la Terraform état (il n'est pas écrit sur le disque en fichiers autres que ce qui pourrait être fait pour le transformer le terrain de l'état lui-même lorsque vous ne l'utilisez à distance de l'état), crée une AWS paire de clés basé sur la clé publique, puis crée une Ubuntu 14.04 instance où l' ubuntu
utilisateur est accessible avec la clé privée qui a été généré.
Vous auriez alors à extraire la clé privée à partir du fichier d'état et de fournir aux utilisateurs. Vous pouvez utiliser un output
de cracher ce droit vers stdout quand Terraform est appliquée.
Les avertissements de sécurité
Je me dois de souligner ici que la transmission des clés privées autour est généralement une mauvaise idée et vous feriez beaucoup mieux de demander aux développeurs de créer leurs propres paires de clés et de vous fournir avec la clé publique que vous (ou eux) peut utiliser pour générer un AWS paire de clés (éventuellement à l'aide de l' aws_key_pair
des ressources utilisées dans l'exemple ci-dessus) qui peuvent ensuite être spécifié lors de la création d'instances.
En général, je ne utilisez quelque chose comme ci-dessus façon de générer des clés SSH pour très temporaire dev environnements que vous êtes en contrôle de sorte que vous n'avez pas besoin de passer les clés privées de n'importe qui. Si vous avez besoin de passer des clés privées des gens, vous devez vous assurer que vous faites cela dans un canal sécurisé et que vous vous assurez que le Terraform etat (qui contient la clé privée en texte brut) est également fixé de manière appropriée.