You can use tls_private_key terraform resource to create an SSH key in terraform.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
cat main.tf #---------------------------------------------------- ## Define your key variable variable "generated_key_name" { type = string default = "terraform-key-pair" description = "Key-pair generated by Terraform" } ## Generate SSH key content using terraform resource "tls_private_key" "dev_key" { algorithm = "RSA" rsa_bits = 4096 } ## Create a AWS key pair using the ssh key generated previously ## Stores the public key in aws and private key in the local system resource "aws_key_pair" "generated_key" { key_name = var.generated_key_name public_key = tls_private_key.dev_key.public_key_openssh provisioner "local-exec" { # Generate "terraform-key-pair.pem" in current directory command = <<-EOT echo '${tls_private_key.dev_key.private_key_pem}' > ./'${var.generated_key_name}'.pem chmod 400 ./'${var.generated_key_name}'.pem EOT } } ## Optinally you can even output the private key content, though not recommended output "ssh_key" { description = "ssh key generated by terraform" value = tls_private_key.dev_key.private_key_pem } #---------------------------------------------------- |