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
(59 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance | + | <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]] == | ||
+ | * [[AWS instance example with aws_ami lookup and key_name]]: <code>[[aws_instance]]</code>, <code>[[data.]][[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 creating VPC]]: <code>[[aws_vpc]]</code> | ||
+ | |||
+ | == Examples == | ||
[[resource]] "[[aws_instance]]" "MYexample" { | [[resource]] "[[aws_instance]]" "MYexample" { | ||
[[ami]] = "[[ami-08d70e59c07c61a3a]]" | [[ami]] = "[[ami-08d70e59c07c61a3a]]" | ||
− | [[instance_type]] = "[[t2.micro]]" | + | [[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 = { | tags = { | ||
Line 11: | Line 39: | ||
} | } | ||
} | } | ||
− | |||
− | |||
Line 20: | Line 46: | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | resource "aws_instance" "myUbuntuMicroInstance" { |
− | * <code>[[ami]]</code> | + | 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 == | ||
+ | |||
+ | output "instance_ip_addr" { | ||
+ | value = [[aws_instance.]]your_server[[.private_ip]] | ||
+ | } | ||
+ | |||
+ | == Errors == | ||
+ | * [[Error: creating EC2 Instance: UnauthorizedOperation: You are not authorized to perform this operation]] | ||
+ | |||
+ | == aws_instance arguments == | ||
+ | * <code>[[Amazon AMI|ami]]</code> | ||
* <code>[[instance_type]]</code> | * <code>[[instance_type]]</code> | ||
* <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> | ||
− | * <code>[[ | + | * <code>[[subnet_id]], [[public_ip]]</code> |
− | + | * <code>[[aws_security_group]]: [[vpc_security_group_ids]]</code>: (Optional, [[list]]) https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#vpc_security_group_ids | |
− | * <code>[[ | ||
− | |||
* <code>[[root_block_device]]</code> | * <code>[[root_block_device]]</code> | ||
* <code>[[iops]]</code> | * <code>[[iops]]</code> | ||
− | * <code>[[iam_instance_profile]]</code> | + | * <code>[[iam_instance_profile]]</code> (Optional) |
+ | * <code>[[user_data]]</code> | ||
+ | * <code>[[credit_specification]]</code> | ||
+ | * <code>[[lifecycle]]</code> | ||
+ | * <code>[[tenancy]]</code> | ||
+ | * <code>[[instance_state]]</code> | ||
== Related terms == | == Related terms == | ||
Line 46: | Line 97: | ||
* <code>[[aws ec2 run-instances]]</code> | * <code>[[aws ec2 run-instances]]</code> | ||
* <code>[[aws ec2 describe-key-pairs]]</code> | * <code>[[aws ec2 describe-key-pairs]]</code> | ||
− | |||
* <code>[[source (Terraform modules)]]</code> | * <code>[[source (Terraform modules)]]</code> | ||
* [[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> | ||
+ | * [[volume_size]] | ||
+ | * <code>[[ebs_block_device]]</code> resource argument | ||
+ | * <code>[[aws_eip]]</code> | ||
+ | * <code>[[aws instance.your_instance_name will be updated in-place]]</code> | ||
+ | * <code>[[count]]</code> | ||
+ | * <code>[[VcpuLimitExceeded]]</code> | ||
+ | * [[Datadog: EC2 instances should enforce IMDSv2]] | ||
+ | * <code>[[aws_ec2_instance_metadata_defaults]]</code> | ||
== See also == | == See also == | ||
* {{aws_instance}} | * {{aws_instance}} | ||
− | |||
[[Category:Terraform]] | [[Category:Terraform]] |
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: