Simple Terraform module for generating ed25519
or rsa
SSH key pair to be used to control login access to AWS EC2 instances via SSH. The module generates AWS key pair and exports it to a OpenSSH "Authorized Keys" format files in the root module directory.
The module only supports ED25519
(default) and RSA
key types. For RSA
keys, you can set the size of the generated key, in bits (default size 4096). Supported key sizes 2048
, 3072
and 4096
bits.
This Terraform module was developed as an addition to the Terraform EC2 Instances module, but can be used independently.
To use the module you need to add the following module definition block in the root module
/*
'SSH-Keygen' module definition
*/
module "ssh-keygen" {
source = "github.com/amarienko/Terraform-AWS-SSH-Keygen"
algorithm = "RSA"
rsa_bits = 2048
}
Name | Description | Type | Default |
---|---|---|---|
algorithm | (Optional) Name of the algorithm to use when generating the private key. | string |
"ED25519" |
rsa_bits | (Optional) The size of the generated RSA key in bits | number |
4096 |
all_tags | (Optional) User defined map of tags to add to aws_key_pair resource |
map(string) |
{} |
domain | (Optional) User defined objects tree | string |
"" |
Name | Description |
---|---|
ssh__00__keypair_info | Includes general information about the generated key pair: key pair name, key pair ID and fingerprint of public key data, described in Section 4 of RFC4716 |
ssh__01__key_name | The key pair name |
/*
Initial local variables definition
*/
locals {
all_tags = merge(
{
UUID = uuidv5("dns",
"${var.environment}.${var.namespace}.${var.region}.${var.cloud_provider}"
)
Provider = var.cloud_provider
Tool = var.tool
Namespace = var.namespace
Environment = var.environment
Group = "${var.environment}.${var.namespace}.${var.region}.${var.cloud_provider}"
},
var.user_tags,
)
}
/*
'SSH-Keygen' module
*/
module "ssh-keygen" {
source = "github.com/amarienko/Terraform-AWS-SSH-Keygen"
algorithm = "ED25519"
all_tags = local.all_tags
}
/*
Output: Key pair details
*/
output "ec2__00__keypair" {
value = module.ssh-keygen.ssh__00__keypair_info
}
Name | Version |
---|---|
aws | ~> 4.0 |
tls | ~> 4.0.1 |
random | ~> 3.0 |
local | ~> 2.2 |