Spaces:
Runtime error
Runtime error
| # Provides a resource to manage EC2 Fleets. | |
| # | |
| # Usage: | |
| # Configure the credentials first with `aws configure` | |
| # Create a file named `terraform.tfvars` and set the values of the variables defined in `variables.tf` | |
| # | |
| # terraform init Initialize a Terraform working directory | |
| # terraform validate Validates the Terraform files | |
| # terraform fmt Rewrites config files to canonical format | |
| # terraform plan Generate and show an execution plan | |
| # terraform apply Builds or changes infrastructure | |
| # terraform destroy Destroy Terraform-managed infrastructure | |
| provider "aws" { | |
| region = var.region | |
| } | |
| locals { | |
| common_tags = { | |
| Name = "guardai" | |
| project = var.project_tag | |
| } | |
| } | |
| resource "aws_security_group" "guardai_ami_sg" { | |
| ingress { | |
| from_port = 22 | |
| to_port = 22 | |
| protocol = "tcp" | |
| cidr_blocks = [ | |
| "0.0.0.0/0", | |
| ] | |
| } | |
| ingress { | |
| from_port = 80 | |
| to_port = 80 | |
| protocol = "tcp" | |
| cidr_blocks = [ | |
| "0.0.0.0/0", | |
| ] | |
| } | |
| ingress { | |
| from_port = 443 | |
| to_port = 443 | |
| protocol = "tcp" | |
| cidr_blocks = [ | |
| "0.0.0.0/0", | |
| ] | |
| } | |
| # outbound internet access | |
| # allowed: any egress traffic to anywhere | |
| egress { | |
| from_port = 0 | |
| to_port = 0 | |
| protocol = "-1" | |
| cidr_blocks = [ | |
| "0.0.0.0/0", | |
| ] | |
| } | |
| tags = local.common_tags | |
| } | |
| # Provides an EC2 launch template resource. | |
| # Can be used to create EC2 instances or auto scaling groups. | |
| resource "aws_launch_template" "guardai_ami_lt" { | |
| name_prefix = "guard_ai_launch_template" | |
| image_id = var.ami_id | |
| key_name = var.key_name | |
| vpc_security_group_ids = [ | |
| aws_security_group.guardai_ami_sg.id, | |
| ] | |
| instance_type = var.instance_type | |
| tag_specifications { | |
| # Tags of EC2 instances | |
| resource_type = "instance" | |
| tags = local.common_tags | |
| } | |
| tag_specifications { | |
| # Tags of EBS volumes | |
| resource_type = "volume" | |
| tags = local.common_tags | |
| } | |
| } | |
| # Assign elastic IP to the instance | |
| resource "aws_eip_association" "eip_assoc" { | |
| instance_id = aws_instance.main_instance.id | |
| allocation_id = var.eip_id | |
| } | |
| # Launch an EC2 instance | |
| resource "aws_instance" "main_instance" { | |
| launch_template { | |
| id = aws_launch_template.guardai_ami_lt.id | |
| version = "$Latest" | |
| } | |
| # The tags of the Fleet resource itself. | |
| # To tag instances at launch, specify the tags in the Launch Template. | |
| tags = local.common_tags | |
| availability_zone = var.zone | |
| } |