Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/terraform-aws-modules/terraform-aws-key-pair
Terraform module to create AWS EC2 key pair resources πΊπ¦
https://github.com/terraform-aws-modules/terraform-aws-key-pair
aws aws-ec2 ec2-key-pair key-pair terraform-module
Last synced: about 1 month ago
JSON representation
Terraform module to create AWS EC2 key pair resources πΊπ¦
- Host: GitHub
- URL: https://github.com/terraform-aws-modules/terraform-aws-key-pair
- Owner: terraform-aws-modules
- License: apache-2.0
- Created: 2019-09-25T14:45:59.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-03-06T19:13:59.000Z (8 months ago)
- Last Synced: 2024-09-27T19:01:20.589Z (about 2 months ago)
- Topics: aws, aws-ec2, ec2-key-pair, key-pair, terraform-module
- Language: HCL
- Homepage: https://registry.terraform.io/modules/terraform-aws-modules/key-pair/aws
- Size: 53.7 KB
- Stars: 83
- Watchers: 8
- Forks: 126
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# AWS Key Pair Terraform module
Terraform module which creates EC2 key pair on AWS.
[![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)
## Usage
### EC2 Key pair w/ module created key material
```hcl
module "key_pair" {
source = "terraform-aws-modules/key-pair/aws"key_name = "deployer-one"
create_private_key = true
}
```### EC2 Key pair w/ externally created public key material
```hcl
resource "tls_private_key" "this" {
algorithm = "RSA"
}module "key_pair" {
source = "terraform-aws-modules/key-pair/aws"key_name = "deployer-two"
public_key = trimspace(tls_private_key.this.public_key_openssh)
}
```### EC2 Key pair w/ existing public key material
```hcl
module "key_pair" {
source = "terraform-aws-modules/key-pair/aws"key_name = "deployer-three"
public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD3F6tyPEFEzV0LX3X8BsXdMsQz1x2cEikKDEY0aIj41qgxMCP/iteneqXSIFZBp5vizPvaoIR3Um9xK7PGoW8giupGn+EPuxIA4cDM4vzOqOkiMPhz5XK0whEjkVzTo4+S0puvDZuwIsdiW9mxhJc7tgBNL0cYlWSYVkz4G/fslNfRPW5mYAM49f4fhtxPb5ok4Q2Lg9dPKVHO/Bgeu5woMc7RY0p1ej6D4CKFE6lymSDJpW0YHX/wqE9+cfEauh7xZcG0q9t2ta6F6fmX0agvpFyZo8aFbXeUBr7osSCJNgvavWbM/06niWrOvYX2xwWdhXmXSrbX8ZbabVohBK41 [email protected]"
}
```## Conditional creation
Sometimes you need to have a way to create key pair conditionally but Terraform does not allow to use `count` inside `module` block, so the solution is to specify argument `create_key_pair`.
```hcl
# This EC2 key pair will not be created
module "key_pair" {
source = "terraform-aws-modules/key-pair/aws"create = false
# ... omitted
}
```## Examples:
- [Complete](https://github.com/terraform-aws-modules/terraform-aws-key-pair/tree/master/examples/complete) - Create EC2 key pair
## Requirements
| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.0 |
| [aws](#requirement\_aws) | >= 4.21 |
| [tls](#requirement\_tls) | >= 3.4 |## Providers
| Name | Version |
|------|---------|
| [aws](#provider\_aws) | >= 4.21 |
| [tls](#provider\_tls) | >= 3.4 |## Modules
No modules.
## Resources
| Name | Type |
|------|------|
| [aws_key_pair.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/key_pair) | resource |
| [tls_private_key.this](https://registry.terraform.io/providers/hashicorp/tls/latest/docs/resources/private_key) | resource |## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [create](#input\_create) | Determines whether resources will be created (affects all resources) | `bool` | `true` | no |
| [create\_private\_key](#input\_create\_private\_key) | Determines whether a private key will be created | `bool` | `false` | no |
| [key\_name](#input\_key\_name) | The name for the key pair. Conflicts with `key_name_prefix` | `string` | `null` | no |
| [key\_name\_prefix](#input\_key\_name\_prefix) | Creates a unique name beginning with the specified prefix. Conflicts with `key_name` | `string` | `null` | no |
| [private\_key\_algorithm](#input\_private\_key\_algorithm) | Name of the algorithm to use when generating the private key. Currently-supported values are `RSA` and `ED25519` | `string` | `"RSA"` | no |
| [private\_key\_rsa\_bits](#input\_private\_key\_rsa\_bits) | When algorithm is `RSA`, the size of the generated RSA key, in bits (default: `4096`) | `number` | `4096` | no |
| [public\_key](#input\_public\_key) | The public key material | `string` | `""` | no |
| [tags](#input\_tags) | A map of tags to add to all resources | `map(string)` | `{}` | no |## Outputs
| Name | Description |
|------|-------------|
| [key\_pair\_arn](#output\_key\_pair\_arn) | The key pair ARN |
| [key\_pair\_fingerprint](#output\_key\_pair\_fingerprint) | The MD5 public key fingerprint as specified in section 4 of RFC 4716 |
| [key\_pair\_id](#output\_key\_pair\_id) | The key pair ID |
| [key\_pair\_name](#output\_key\_pair\_name) | The key pair name |
| [private\_key\_id](#output\_private\_key\_id) | Unique identifier for this resource: hexadecimal representation of the SHA1 checksum of the resource |
| [private\_key\_openssh](#output\_private\_key\_openssh) | Private key data in OpenSSH PEM (RFC 4716) format |
| [private\_key\_pem](#output\_private\_key\_pem) | Private key data in PEM (RFC 1421) format |
| [public\_key\_fingerprint\_md5](#output\_public\_key\_fingerprint\_md5) | The fingerprint of the public key data in OpenSSH MD5 hash format, e.g. `aa:bb:cc:....` Only available if the selected private key format is compatible, similarly to `public_key_openssh` and the ECDSA P224 limitations |
| [public\_key\_fingerprint\_sha256](#output\_public\_key\_fingerprint\_sha256) | The fingerprint of the public key data in OpenSSH SHA256 hash format, e.g. `SHA256:....` Only available if the selected private key format is compatible, similarly to `public_key_openssh` and the ECDSA P224 limitations |
| [public\_key\_openssh](#output\_public\_key\_openssh) | The public key data in "Authorized Keys" format. This is populated only if the configured private key is supported: this includes all `RSA` and `ED25519` keys |
| [public\_key\_pem](#output\_public\_key\_pem) | Public key data in PEM (RFC 1421) format |## Authors
Module is maintained by [Anton Babenko](https://github.com/antonbabenko) with help from [these awesome contributors](https://github.com/terraform-aws-modules/terraform-aws-key-pair/graphs/contributors).
## License
Apache 2 Licensed. See [LICENSE](https://github.com/terraform-aws-modules/terraform-aws-key-pair/tree/master/LICENSE) for full details.