Difference between revisions of "Terraform resource: aws instance"
Jump to navigation
Jump to search
↑ https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#key_name
(20 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<code>[[aws_instance]]</code> ([https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance ref]) | <code>[[aws_instance]]</code> ([https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance ref]) | ||
+ | |||
+ | == Arguments == | ||
+ | * <code>[[subnet_id]]</code> | ||
+ | * <code>[[instance_type]]</code> | ||
+ | * <code>[[ami]]</code> | ||
+ | * <code>[[key_name]]</code> | ||
+ | * <code>[[vpc_security_group_ids]]</code> | ||
+ | * <code>[[metadata_options]]</code>: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#metadata-options | ||
+ | ** <code>[[http_tokens]] = required</code> | ||
== [[Terraform examples|Examples]] == | == [[Terraform examples|Examples]] == | ||
Line 5: | Line 14: | ||
* [[AWS instance example with aws_ami lookup]]: <code>[[aws instance]]</code>, <code>[[aws_ami]]</code> | * [[AWS instance example with aws_ami lookup]]: <code>[[aws instance]]</code>, <code>[[aws_ami]]</code> | ||
* [[AWS instance example: main.tf]]: <code>[[aws instance]]</code> | * [[AWS instance example: main.tf]]: <code>[[aws instance]]</code> | ||
− | * [[AWS instance example creating VPC]] | + | * [[AWS instance example creating VPC]]: <code>[[aws_vpc]]</code> |
== Examples == | == Examples == | ||
Line 41: | Line 50: | ||
ami = [[data.]]aws_ami.ubuntu.id | ami = [[data.]]aws_ami.ubuntu.id | ||
.../... | .../... | ||
+ | |||
+ | |||
+ | resource "aws_instance" "my-instance" { | ||
+ | count = var.instance_count | ||
+ | ami = [[lookup]](var.ami,var.aws_region) | ||
+ | instance_type = var.instance_type | ||
+ | key_name = aws_key_pair.terraform-demo.key_name | ||
+ | user_data = file("install_apache.sh") | ||
+ | |||
+ | tags = { | ||
+ | Name = "Terraform-${count.index + 1}" | ||
+ | Batch = "5AM" | ||
+ | } | ||
+ | } | ||
== Outputs == | == Outputs == | ||
Line 47: | Line 70: | ||
value = [[aws_instance.]]your_server[[.private_ip]] | value = [[aws_instance.]]your_server[[.private_ip]] | ||
} | } | ||
+ | |||
+ | == Errors == | ||
+ | * [[Error: creating EC2 Instance: UnauthorizedOperation: You are not authorized to perform this operation]] | ||
== aws_instance arguments == | == aws_instance arguments == | ||
Line 53: | Line 79: | ||
* <code>[[key_name]]</code> <ref>https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#key_name</ref> | * <code>[[key_name]]</code> <ref>https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#key_name</ref> | ||
* <code>[[aws_key_pair]]</code> | * <code>[[aws_key_pair]]</code> | ||
− | * <code>[[availability_zone]]</code> | + | * <code>[[availability_zone]]</code> (optional) |
* <code>[[monitoring]]</code> | * <code>[[monitoring]]</code> | ||
* <code>[[associate_public_ip_address]]</code> | * <code>[[associate_public_ip_address]]</code> | ||
Line 74: | Line 100: | ||
* [[Terraform: Data sources]] | * [[Terraform: Data sources]] | ||
* <code>[[Terraform: VPCIdNotSpecified]]</code> | * <code>[[Terraform: VPCIdNotSpecified]]</code> | ||
− | * [[Terraform module: ec2-instance]] | + | * [[Terraform module]]: <code>[[Terraform module: ec2-instance|ec2-instance]]</code> |
* [[Terraform resource]]: <code>[[Terraform resource: aws volume attachment|aws_volume_attachment]]</code> | * [[Terraform resource]]: <code>[[Terraform resource: aws volume attachment|aws_volume_attachment]]</code> | ||
* [[volume_size]] | * [[volume_size]] | ||
Line 80: | Line 106: | ||
* <code>[[aws_eip]]</code> | * <code>[[aws_eip]]</code> | ||
* <code>[[aws instance.your_instance_name will be updated in-place]]</code> | * <code>[[aws instance.your_instance_name will be updated in-place]]</code> | ||
− | * [[count]] | + | * <code>[[count]]</code> |
− | * [[VcpuLimitExceeded]] | + | * <code>[[VcpuLimitExceeded]]</code> |
+ | * [[Datadog: EC2 instances should enforce IMDSv2]] | ||
+ | * <code>[[aws_ec2_instance_metadata_defaults]]</code> | ||
== See also == | == See also == |
Latest revision as of 11:31, 25 October 2024
Contents
Arguments[edit]
subnet_id
instance_type
ami
key_name
vpc_security_group_ids
metadata_options
: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#metadata-optionshttp_tokens = required
Examples[edit]
- AWS instance example with aws_ami lookup and key_name:
aws_instance
,data.aws_ami
- AWS instance example with aws_ami lookup:
aws instance
,aws_ami
- AWS instance example: main.tf:
aws instance
- AWS instance example creating VPC:
aws_vpc
Examples[edit]
resource "aws_instance" "MYexample" { ami = "ami-08d70e59c07c61a3a" instance_type = "t3.micro" tags = { Name = "your_name_here" } } See also: AWS instance example with aws_ami lookup
resource "aws_instance" "MYexample" { ami = "ami-08d70e59c07c61a3a" instance_type = "t2.micro" associate_public_ip_address = "yes" tags = { Name = "your_name_here" } }
Example for terraform import
:
resource "aws_instance" "restore-backups-machine" { # (resource arguments) }
resource "aws_instance" "myUbuntuMicroInstance" { ami = data.aws_ami.ubuntu.id .../...
resource "aws_instance" "my-instance" { count = var.instance_count ami = lookup(var.ami,var.aws_region) instance_type = var.instance_type key_name = aws_key_pair.terraform-demo.key_name user_data = file("install_apache.sh") tags = { Name = "Terraform-${count.index + 1}" Batch = "5AM" } }
Outputs[edit]
output "instance_ip_addr" { value = aws_instance.your_server.private_ip }
Errors[edit]
aws_instance arguments[edit]
ami
instance_type
key_name
[1]aws_key_pair
availability_zone
(optional)monitoring
associate_public_ip_address
subnet_id, public_ip
aws_security_group: vpc_security_group_ids
: (Optional, list) https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#vpc_security_group_idsroot_block_device
iops
iam_instance_profile
(Optional)user_data
credit_specification
lifecycle
tenancy
instance_state
Related terms[edit]
terraform show (grep aws_instance)
aws ec2 run-instances
aws ec2 describe-key-pairs
source (Terraform modules)
- Terraform: Data sources
Terraform: VPCIdNotSpecified
- Terraform module:
ec2-instance
- Terraform resource:
aws_volume_attachment
- volume_size
ebs_block_device
resource argumentaws_eip
aws instance.your_instance_name will be updated in-place
count
VcpuLimitExceeded
- Datadog: EC2 instances should enforce IMDSv2
aws_ec2_instance_metadata_defaults
See also[edit]
- Terraform AWS:
aws_instance
:ami
,availability_zone
,instance_type
,key_name
,aws_key_pair
,monitoring
,associate_public_ip_address
,tenancy
,subnet_id, user_data, iam_instance_profile, vpc_security_group_ids, root_block_device, ebs_block_device
Advertising: