NEW: initial commit
This commit is contained in:
commit
1e9b274965
32
.gitignore
vendored
Normal file
32
.gitignore
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
### IntelliJ IDEA ###
|
||||||
|
out/
|
||||||
|
!**/src/main/**/out/
|
||||||
|
!**/src/test/**/out/
|
||||||
|
|
||||||
|
### Eclipse ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
bin/
|
||||||
|
!**/src/main/**/bin/
|
||||||
|
!**/src/test/**/bin/
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
### Mac OS ###
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
### Terraform ###
|
||||||
|
.terraform
|
3
.idea/.gitignore
vendored
Normal file
3
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
6
.idea/misc.xml
Normal file
6
.idea/misc.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_22" default="true" project-jdk-name="graalvm-22" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/terraform-training.iml" filepath="$PROJECT_DIR$/terraform-training.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
10
Compute/Demo1/.terraform.lock.hcl
Normal file
10
Compute/Demo1/.terraform.lock.hcl
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# This file is maintained automatically by "terraform init".
|
||||||
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
|
provider "registry.terraform.io/hashicorp/aws" {
|
||||||
|
version = "5.51.1"
|
||||||
|
constraints = ">= 5.0.0"
|
||||||
|
hashes = [
|
||||||
|
"h1:ESfxP2tCO6IZldSQnepXmIm+x+VtaQt/bKgGjYE+0BY=",
|
||||||
|
]
|
||||||
|
}
|
5
Compute/Demo1/main.tf
Normal file
5
Compute/Demo1/main.tf
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
resource "aws_instance" "example" {
|
||||||
|
ami = "ami-0157c3cc39a1c5cc0"
|
||||||
|
instance_type = "t4g.large"
|
||||||
|
subnet_id = "subnet-0927ba1b06ccfe6c5"
|
||||||
|
}
|
28
Compute/Demo1/provider.tf
Normal file
28
Compute/Demo1/provider.tf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
provider "aws" {
|
||||||
|
region = "ap-east-1"
|
||||||
|
|
||||||
|
default_tags {
|
||||||
|
tags = {
|
||||||
|
ServiceProvider = "RackspaceTechnology"
|
||||||
|
Environment = "Training"
|
||||||
|
Project = "Iac"
|
||||||
|
TerraformMode = "managed"
|
||||||
|
Owner = "ken2026"
|
||||||
|
TerraformDir = "${reverse(split("/", path.cwd))[1]}/${reverse(split("/", path.cwd))[0]}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output "last-updated" {
|
||||||
|
value = timestamp()
|
||||||
|
}
|
||||||
|
|
||||||
|
terraform {
|
||||||
|
required_version = ">= 1.3.0"
|
||||||
|
required_providers {
|
||||||
|
aws = {
|
||||||
|
source = "hashicorp/aws"
|
||||||
|
version = ">= 5.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
9
Compute/Demo1/terraform.tfstate
Normal file
9
Compute/Demo1/terraform.tfstate
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"version": 4,
|
||||||
|
"terraform_version": "1.3.9",
|
||||||
|
"serial": 9,
|
||||||
|
"lineage": "05a7ba76-3512-c858-95f8-aa6ea555f1ee",
|
||||||
|
"outputs": {},
|
||||||
|
"resources": [],
|
||||||
|
"check_results": null
|
||||||
|
}
|
156
Compute/Demo1/terraform.tfstate.backup
Normal file
156
Compute/Demo1/terraform.tfstate.backup
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
{
|
||||||
|
"version": 4,
|
||||||
|
"terraform_version": "1.3.9",
|
||||||
|
"serial": 7,
|
||||||
|
"lineage": "05a7ba76-3512-c858-95f8-aa6ea555f1ee",
|
||||||
|
"outputs": {
|
||||||
|
"last-updated": {
|
||||||
|
"value": "2024-05-30T02:41:22Z",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"mode": "managed",
|
||||||
|
"type": "aws_instance",
|
||||||
|
"name": "example",
|
||||||
|
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"schema_version": 1,
|
||||||
|
"attributes": {
|
||||||
|
"ami": "ami-0157c3cc39a1c5cc0",
|
||||||
|
"arn": "arn:aws:ec2:ap-east-1:040216112220:instance/i-037e063ccb317f0db",
|
||||||
|
"associate_public_ip_address": true,
|
||||||
|
"availability_zone": "ap-east-1a",
|
||||||
|
"capacity_reservation_specification": [
|
||||||
|
{
|
||||||
|
"capacity_reservation_preference": "open",
|
||||||
|
"capacity_reservation_target": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cpu_core_count": 2,
|
||||||
|
"cpu_options": [
|
||||||
|
{
|
||||||
|
"amd_sev_snp": "",
|
||||||
|
"core_count": 2,
|
||||||
|
"threads_per_core": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cpu_threads_per_core": 1,
|
||||||
|
"credit_specification": [
|
||||||
|
{
|
||||||
|
"cpu_credits": "unlimited"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"disable_api_stop": false,
|
||||||
|
"disable_api_termination": false,
|
||||||
|
"ebs_block_device": [],
|
||||||
|
"ebs_optimized": false,
|
||||||
|
"enclave_options": [
|
||||||
|
{
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ephemeral_block_device": [],
|
||||||
|
"get_password_data": false,
|
||||||
|
"hibernation": false,
|
||||||
|
"host_id": "",
|
||||||
|
"host_resource_group_arn": null,
|
||||||
|
"iam_instance_profile": "",
|
||||||
|
"id": "i-037e063ccb317f0db",
|
||||||
|
"instance_initiated_shutdown_behavior": "stop",
|
||||||
|
"instance_lifecycle": "",
|
||||||
|
"instance_market_options": [],
|
||||||
|
"instance_state": "running",
|
||||||
|
"instance_type": "t4g.large",
|
||||||
|
"ipv6_address_count": 0,
|
||||||
|
"ipv6_addresses": [],
|
||||||
|
"key_name": "",
|
||||||
|
"launch_template": [],
|
||||||
|
"maintenance_options": [
|
||||||
|
{
|
||||||
|
"auto_recovery": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata_options": [
|
||||||
|
{
|
||||||
|
"http_endpoint": "enabled",
|
||||||
|
"http_protocol_ipv6": "disabled",
|
||||||
|
"http_put_response_hop_limit": 2,
|
||||||
|
"http_tokens": "required",
|
||||||
|
"instance_metadata_tags": "disabled"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"monitoring": false,
|
||||||
|
"network_interface": [],
|
||||||
|
"outpost_arn": "",
|
||||||
|
"password_data": "",
|
||||||
|
"placement_group": "",
|
||||||
|
"placement_partition_number": 0,
|
||||||
|
"primary_network_interface_id": "eni-0375c305514c6813c",
|
||||||
|
"private_dns": "ip-172-20-16-111.ap-east-1.compute.internal",
|
||||||
|
"private_dns_name_options": [
|
||||||
|
{
|
||||||
|
"enable_resource_name_dns_a_record": false,
|
||||||
|
"enable_resource_name_dns_aaaa_record": false,
|
||||||
|
"hostname_type": "ip-name"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"private_ip": "172.20.16.111",
|
||||||
|
"public_dns": "ec2-18-163-2-19.ap-east-1.compute.amazonaws.com",
|
||||||
|
"public_ip": "18.163.2.19",
|
||||||
|
"root_block_device": [
|
||||||
|
{
|
||||||
|
"delete_on_termination": true,
|
||||||
|
"device_name": "/dev/xvda",
|
||||||
|
"encrypted": false,
|
||||||
|
"iops": 3000,
|
||||||
|
"kms_key_id": "",
|
||||||
|
"tags": {},
|
||||||
|
"tags_all": {
|
||||||
|
"Environment": "Training",
|
||||||
|
"Owner": "ken2026",
|
||||||
|
"Project": "Iac",
|
||||||
|
"ServiceProvider": "RackspaceTechnology",
|
||||||
|
"TerraformDir": "Compute/Demo1",
|
||||||
|
"TerraformMode": "managed"
|
||||||
|
},
|
||||||
|
"throughput": 125,
|
||||||
|
"volume_id": "vol-061192850e49ddff0",
|
||||||
|
"volume_size": 8,
|
||||||
|
"volume_type": "gp3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"secondary_private_ips": [],
|
||||||
|
"security_groups": [],
|
||||||
|
"source_dest_check": true,
|
||||||
|
"spot_instance_request_id": "",
|
||||||
|
"subnet_id": "subnet-0927ba1b06ccfe6c5",
|
||||||
|
"tags": {},
|
||||||
|
"tags_all": {
|
||||||
|
"Environment": "Training",
|
||||||
|
"Owner": "ken2026",
|
||||||
|
"Project": "Iac",
|
||||||
|
"ServiceProvider": "RackspaceTechnology",
|
||||||
|
"TerraformDir": "Compute/Demo1",
|
||||||
|
"TerraformMode": "managed"
|
||||||
|
},
|
||||||
|
"tenancy": "default",
|
||||||
|
"timeouts": null,
|
||||||
|
"user_data": null,
|
||||||
|
"user_data_base64": null,
|
||||||
|
"user_data_replace_on_change": false,
|
||||||
|
"volume_tags": null,
|
||||||
|
"vpc_security_group_ids": [
|
||||||
|
"sg-04ec154cb0f516e76"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
|
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMCwicmVhZCI6OTAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"check_results": null
|
||||||
|
}
|
10
Compute/Demo2/.terraform.lock.hcl
Normal file
10
Compute/Demo2/.terraform.lock.hcl
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# This file is maintained automatically by "terraform init".
|
||||||
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
|
provider "registry.terraform.io/hashicorp/aws" {
|
||||||
|
version = "5.51.1"
|
||||||
|
constraints = ">= 5.0.0"
|
||||||
|
hashes = [
|
||||||
|
"h1:ESfxP2tCO6IZldSQnepXmIm+x+VtaQt/bKgGjYE+0BY=",
|
||||||
|
]
|
||||||
|
}
|
14
Compute/Demo2/main.tf
Normal file
14
Compute/Demo2/main.tf
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
resource "aws_instance" "example1" {
|
||||||
|
count = 2
|
||||||
|
ami = "ami-0157c3cc39a1c5cc0"
|
||||||
|
instance_type = "t4g.large"
|
||||||
|
subnet_id = "subnet-0927ba1b06ccfe6c5"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_instance" "example2" {
|
||||||
|
for_each = toset(["instance1", "instance2"])
|
||||||
|
ami = "ami-0157c3cc39a1c5cc0"
|
||||||
|
instance_type = "t4g.large"
|
||||||
|
subnet_id = "subnet-0927ba1b06ccfe6c5"
|
||||||
|
tags = { Name : each.value }
|
||||||
|
}
|
28
Compute/Demo2/provider.tf
Normal file
28
Compute/Demo2/provider.tf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
provider "aws" {
|
||||||
|
region = "ap-east-1"
|
||||||
|
|
||||||
|
default_tags {
|
||||||
|
tags = {
|
||||||
|
ServiceProvider = "RackspaceTechnology"
|
||||||
|
Environment = "Training"
|
||||||
|
Project = "Iac"
|
||||||
|
TerraformMode = "managed"
|
||||||
|
Owner = "ken2026"
|
||||||
|
TerraformDir = "${reverse(split("/", path.cwd))[1]}/${reverse(split("/", path.cwd))[0]}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output "last-updated" {
|
||||||
|
value = timestamp()
|
||||||
|
}
|
||||||
|
|
||||||
|
terraform {
|
||||||
|
required_version = ">= 1.3.0"
|
||||||
|
required_providers {
|
||||||
|
aws = {
|
||||||
|
source = "hashicorp/aws"
|
||||||
|
version = ">= 5.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
Compute/Demo3/.terraform.lock.hcl
Normal file
17
Compute/Demo3/.terraform.lock.hcl
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# This file is maintained automatically by "terraform init".
|
||||||
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
|
provider "registry.terraform.io/hashicorp/aws" {
|
||||||
|
version = "5.51.1"
|
||||||
|
constraints = ">= 5.0.0"
|
||||||
|
hashes = [
|
||||||
|
"h1:ESfxP2tCO6IZldSQnepXmIm+x+VtaQt/bKgGjYE+0BY=",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "registry.terraform.io/hashicorp/tls" {
|
||||||
|
version = "4.0.5"
|
||||||
|
hashes = [
|
||||||
|
"h1:e4LBdJoZJNOQXPWgOAG0UuPBVhCStu98PieNlqJTmeU=",
|
||||||
|
]
|
||||||
|
}
|
4
Compute/Demo3/main.tf
Normal file
4
Compute/Demo3/main.tf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
module "ec2-instance" {
|
||||||
|
source = "../../Modules/Compute/ec2"
|
||||||
|
name = "demo3"
|
||||||
|
}
|
28
Compute/Demo3/provider.tf
Normal file
28
Compute/Demo3/provider.tf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
provider "aws" {
|
||||||
|
region = "ap-east-1"
|
||||||
|
|
||||||
|
default_tags {
|
||||||
|
tags = {
|
||||||
|
ServiceProvider = "RackspaceTechnology"
|
||||||
|
Environment = "Training"
|
||||||
|
Project = "Iac"
|
||||||
|
TerraformMode = "managed"
|
||||||
|
Owner = "ken2026"
|
||||||
|
TerraformDir = "${reverse(split("/", path.cwd))[1]}/${reverse(split("/", path.cwd))[0]}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output "last-updated" {
|
||||||
|
value = timestamp()
|
||||||
|
}
|
||||||
|
|
||||||
|
terraform {
|
||||||
|
required_version = ">= 1.3.0"
|
||||||
|
required_providers {
|
||||||
|
aws = {
|
||||||
|
source = "hashicorp/aws"
|
||||||
|
version = ">= 5.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
26
Modules/Compute/ec2/main.tf
Normal file
26
Modules/Compute/ec2/main.tf
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
resource "aws_instance" "example" {
|
||||||
|
ami = "ami-0157c3cc39a1c5cc0"
|
||||||
|
instance_type = "t4g.large"
|
||||||
|
subnet_id = "subnet-0927ba1b06ccfe6c5"
|
||||||
|
key_name = aws_key_pair.this.key_name
|
||||||
|
|
||||||
|
# IMDSv2 requirement
|
||||||
|
dynamic "metadata_options" {
|
||||||
|
for_each = var.disable_secure_idmsv2 == false ? { set_idmsv2 : true } : {}
|
||||||
|
content {
|
||||||
|
http_endpoint = "enabled"
|
||||||
|
http_tokens = "required"
|
||||||
|
http_put_response_hop_limit = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tags = { Name : var.name }
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "tls_private_key" "this" {
|
||||||
|
algorithm = "ED25519"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_key_pair" "this" {
|
||||||
|
key_name = "${var.name}-sshkey"
|
||||||
|
public_key = tls_private_key.this.public_key_openssh
|
||||||
|
}
|
28
Modules/Compute/ec2/provider.tf
Normal file
28
Modules/Compute/ec2/provider.tf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
provider "aws" {
|
||||||
|
region = "ap-east-1"
|
||||||
|
|
||||||
|
default_tags {
|
||||||
|
tags = {
|
||||||
|
ServiceProvider = "RackspaceTechnology"
|
||||||
|
Environment = "Training"
|
||||||
|
Project = "Iac"
|
||||||
|
TerraformMode = "managed"
|
||||||
|
Owner = "ken2026"
|
||||||
|
TerraformDir = "${reverse(split("/", path.cwd))[1]}/${reverse(split("/", path.cwd))[0]}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output "last-updated" {
|
||||||
|
value = timestamp()
|
||||||
|
}
|
||||||
|
|
||||||
|
terraform {
|
||||||
|
required_version = ">= 1.3.0"
|
||||||
|
required_providers {
|
||||||
|
aws = {
|
||||||
|
source = "hashicorp/aws"
|
||||||
|
version = ">= 5.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
10
Modules/Compute/ec2/variables.tf
Normal file
10
Modules/Compute/ec2/variables.tf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
variable "name" {
|
||||||
|
type = string
|
||||||
|
description = "Name of Ec2 instance"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "disable_secure_idmsv2" {
|
||||||
|
type = bool
|
||||||
|
default = false
|
||||||
|
description = "Allow use of insecure idmsv1. Default is false."
|
||||||
|
}
|
11
terraform-training.iml
Normal file
11
terraform-training.iml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
Loading…
Reference in New Issue
Block a user