From 2befb919e79f47d983370bdb77b972e7b6a0dc68 Mon Sep 17 00:00:00 2001 From: "yak.entelgy" Date: Wed, 16 Jun 2021 18:17:04 -0300 Subject: [PATCH 01/11] doc: readme inicial --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ec3dc91..6caa53e 100644 --- a/README.md +++ b/README.md @@ -1 +1,9 @@ -# terraform +## Terraform Estudos + +Repositório para praticar conceitos do Terraform + +... + +``` +docker run --rm -it -v $PWD:/app -w /app --entrypoint "" --entrypoint "" hashicorp/terraform:light sh +``` \ No newline at end of file From a0ed8c1137879685e89bb62388b196ef58756d70 Mon Sep 17 00:00:00 2001 From: "yak.entelgy" Date: Wed, 16 Jun 2021 18:17:47 -0300 Subject: [PATCH 02/11] chore: add script sh --- .gitignore | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2fb3b35..2139b2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,58 @@ -.terraform.lock.hcl -.terraform/ +# These are some examples of commonly ignored file patterns. +# You should customize this list as applicable to your project. +# Learn more about .gitignore: +# https://www.atlassian.com/git/tutorials/saving-changes/gitignore + +# Node artifact files +node_modules/ +dist/ + +# Compiled Java class files +*.class + +# Compiled Python bytecode +*.py[cod] + +# Log files +*.log + +# Package files +*.jar + +# Maven +target/ +dist/ + +# JetBrains IDE +.idea/ + +# Unit test reports +TEST*.xml + +# Generated by MacOS +.DS_Store + +# Generated by Windows +Thumbs.db + +# Applications +*.app +*.exe +*.war + +# Large media files +*.mp4 +*.tiff +*.avi +*.flv +*.mov +*.wmv + +# terraform +.terraform/ +*.tfstate* +*.hcl plan + +# script +*.sh \ No newline at end of file From 282c8442d054fa5cd96c3eeeb1e8c9a2da5511d5 Mon Sep 17 00:00:00 2001 From: "yak.entelgy" Date: Wed, 16 Jun 2021 18:18:52 -0300 Subject: [PATCH 03/11] feat: add novos modulos e configs --- ec2.tf | 8 -------- main.tf | 8 +++----- servers/ec2.tf | 24 ++++++++++++++++++++++++ servers/outputs.tf | 3 +++ servers/variables.tf | 3 +++ terrafile.tf | 8 ++++++++ versions.tf | 8 ++++++++ 7 files changed, 49 insertions(+), 13 deletions(-) delete mode 100644 ec2.tf create mode 100644 servers/ec2.tf create mode 100644 servers/outputs.tf create mode 100644 servers/variables.tf create mode 100644 terrafile.tf create mode 100644 versions.tf diff --git a/ec2.tf b/ec2.tf deleted file mode 100644 index 432b3dc..0000000 --- a/ec2.tf +++ /dev/null @@ -1,8 +0,0 @@ -resource "aws_instance" "example" { - ami = "ami-08962a4068733a2b6" - instance_type = "t2.micro" - - tags = { - Name = "HelloWorld" - } -} \ No newline at end of file diff --git a/main.tf b/main.tf index 164ff73..73754ae 100644 --- a/main.tf +++ b/main.tf @@ -1,13 +1,11 @@ provider "aws" { - region = "us-east-2" - version = "~> 3.0" + region= "us-east-2" } terraform { backend "s3" { - # Lembre de trocar o bucket para o seu, não pode ser o mesmo nome - bucket = "descomplicando-terraform-ya-tfstates" - key = "terraform-test.tfstate" + bucket = "pipe-boladao" + key = "terraformt.state" region = "us-east-2" } } \ No newline at end of file diff --git a/servers/ec2.tf b/servers/ec2.tf new file mode 100644 index 0000000..bf66aa0 --- /dev/null +++ b/servers/ec2.tf @@ -0,0 +1,24 @@ +data "aws_ami" "ubuntu" { + most_recent = true + + filter { + name = "name" + values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"] + } + + filter { + name = "virtualization-type" + values = ["hvm"] + } + + owners = ["099720109477"] # Canonical +} + +resource "aws_instance" "web" { + ami = data.aws_ami.ubuntu.id + instance_type = "t3.micro" + + tags = { + Name = "terraform" + } +} \ No newline at end of file diff --git a/servers/outputs.tf b/servers/outputs.tf new file mode 100644 index 0000000..23c14fb --- /dev/null +++ b/servers/outputs.tf @@ -0,0 +1,3 @@ +output "public_ip" { + value = aws_instance.web.public_ip +} \ No newline at end of file diff --git a/servers/variables.tf b/servers/variables.tf new file mode 100644 index 0000000..7fc203b --- /dev/null +++ b/servers/variables.tf @@ -0,0 +1,3 @@ +variable "hash_commit" { + default = "806d52dafe9b7fddbc4f0d2d41086ed3cfa02a44" +} \ No newline at end of file diff --git a/terrafile.tf b/terrafile.tf new file mode 100644 index 0000000..8b6fce8 --- /dev/null +++ b/terrafile.tf @@ -0,0 +1,8 @@ +module "servers" { + source = "./servers" + servers = 1 +} + +output "ip_address" { + value = module.servers.ip_address +} \ No newline at end of file diff --git a/versions.tf b/versions.tf new file mode 100644 index 0000000..fa894d9 --- /dev/null +++ b/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "3.42.0" + } + } +} From ade7cf571b0fe2e169aa4c8f4b48679ff1a24759 Mon Sep 17 00:00:00 2001 From: "yak.entelgy" Date: Thu, 17 Jun 2021 14:21:21 -0300 Subject: [PATCH 04/11] ci: config inicial do pipeline terraform --- .github/workflows/ci.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..702763c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,36 @@ +name: 'Terraform' + +on: + push: + branches: + - main + pull_request: + +jobs: + terraform: + name: 'Terraform' + runs-on: ubuntu-20-04 + + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 0.14.0 + terraform_wrapper: false + + - name: Terraform Format + id: fmt + run: terraform fmt -check + continue-on-error: true + + - name: Terraform Init + id: init + run: terraform init + + - name: Terraform Validate + id: validate + run: terraform validate -no-color + + From f3feb07c8037d126e9d96de24620082364a84356 Mon Sep 17 00:00:00 2001 From: "yak.entelgy" Date: Thu, 17 Jun 2021 14:28:16 -0300 Subject: [PATCH 05/11] fix: altera versao do ubuntu --- .github/workflows/ci.yml | 45 ++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 702763c..4d1c1a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: 'Terraform' +name: "Terraform" on: push: @@ -8,29 +8,28 @@ on: jobs: terraform: - name: 'Terraform' - runs-on: ubuntu-20-04 + name: "Unit Tests" + runs-on: ubuntu-18.04 - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Setup Terraform - uses: hashicorp/setup-terraform@v1 - with: - terraform_version: 0.14.0 - terraform_wrapper: false - - - name: Terraform Format - id: fmt - run: terraform fmt -check - continue-on-error: true + steps: + - name: Checkout + uses: actions/checkout@v2 - - name: Terraform Init - id: init - run: terraform init - - - name: Terraform Validate - id: validate - run: terraform validate -no-color + - name: Setup Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 0.14.0 + terraform_wrapper: false + - name: Terraform Format + id: fmt + run: terraform fmt -check + continue-on-error: true + - name: Terraform Init + id: init + run: terraform init + + - name: Terraform Validate + id: validate + run: terraform validate -no-color \ No newline at end of file From 0d354fae5e2a5f89f5f7dd6362009290f1652465 Mon Sep 17 00:00:00 2001 From: "yak.entelgy" Date: Tue, 22 Jun 2021 17:38:54 -0300 Subject: [PATCH 06/11] refactor: altera s3 --- main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.tf b/main.tf index 73754ae..5f9b8f6 100644 --- a/main.tf +++ b/main.tf @@ -4,7 +4,7 @@ provider "aws" { terraform { backend "s3" { - bucket = "pipe-boladao" + bucket = "terraform-pipe" key = "terraformt.state" region = "us-east-2" } From a71952fc2a544af06a8a78cc47ac3cdc64635cbe Mon Sep 17 00:00:00 2001 From: "yak.entelgy" Date: Tue, 22 Jun 2021 17:40:37 -0300 Subject: [PATCH 07/11] feat: cria modulos terraform" - add novas variables; - configura public_ip - add count dos serves --- servers/ec2.tf | 1 + servers/outputs.tf | 2 +- servers/variables.tf | 6 +++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/servers/ec2.tf b/servers/ec2.tf index bf66aa0..49be9d7 100644 --- a/servers/ec2.tf +++ b/servers/ec2.tf @@ -15,6 +15,7 @@ data "aws_ami" "ubuntu" { } resource "aws_instance" "web" { + count = var.servers ami = data.aws_ami.ubuntu.id instance_type = "t3.micro" diff --git a/servers/outputs.tf b/servers/outputs.tf index 23c14fb..c26c220 100644 --- a/servers/outputs.tf +++ b/servers/outputs.tf @@ -1,3 +1,3 @@ output "public_ip" { - value = aws_instance.web.public_ip + value = "${aws_instance.web[*].public_ip}" } \ No newline at end of file diff --git a/servers/variables.tf b/servers/variables.tf index 7fc203b..d0fac43 100644 --- a/servers/variables.tf +++ b/servers/variables.tf @@ -1,3 +1,7 @@ variable "hash_commit" { default = "806d52dafe9b7fddbc4f0d2d41086ed3cfa02a44" -} \ No newline at end of file +} + +variable "servers" { + +} From bdc1c90ef697b659b34d039fcdbc0617aa588b1d Mon Sep 17 00:00:00 2001 From: ya Date: Tue, 22 Jun 2021 20:29:00 -0300 Subject: [PATCH 08/11] fix: corrige nome do output --- servers/outputs.tf | 2 +- terrafile.tf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/servers/outputs.tf b/servers/outputs.tf index c26c220..d5ad0f6 100644 --- a/servers/outputs.tf +++ b/servers/outputs.tf @@ -1,3 +1,3 @@ -output "public_ip" { +output "ip_address" { value = "${aws_instance.web[*].public_ip}" } \ No newline at end of file diff --git a/terrafile.tf b/terrafile.tf index 8b6fce8..f5f0973 100644 --- a/terrafile.tf +++ b/terrafile.tf @@ -1,6 +1,6 @@ module "servers" { source = "./servers" - servers = 1 + servers = 2 } output "ip_address" { From c0c133e5fc219abb3ebf0b3235a8c05b035c6bf0 Mon Sep 17 00:00:00 2001 From: "yak.entelgy" Date: Wed, 23 Jun 2021 09:39:34 -0300 Subject: [PATCH 09/11] ci: add env aws region --- .github/workflows/ci.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4d1c1a8..f218886 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ on: jobs: terraform: name: "Unit Tests" - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - name: Checkout @@ -18,7 +18,7 @@ jobs: - name: Setup Terraform uses: hashicorp/setup-terraform@v1 with: - terraform_version: 0.14.0 + terraform_version: 1.0.0 terraform_wrapper: false - name: Terraform Format @@ -32,4 +32,6 @@ jobs: - name: Terraform Validate id: validate - run: terraform validate -no-color \ No newline at end of file + run: terraform validate -no-color + env: + AWS_DEFAULT_REGION: ${{ AWS_DEFAULT_REGION }} \ No newline at end of file From 647922dc815af90e3597b2d7d7408cdf9f820e92 Mon Sep 17 00:00:00 2001 From: "yak.entelgy" Date: Wed, 23 Jun 2021 09:40:45 -0300 Subject: [PATCH 10/11] fix: corrige fechamento do bloco --- terrafile.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/terrafile.tf b/terrafile.tf index cfdc25a..f5f0973 100644 --- a/terrafile.tf +++ b/terrafile.tf @@ -1,6 +1,7 @@ module "servers" { source = "./servers" servers = 2 +} output "ip_address" { value = module.servers.ip_address From 37bf1203d1c30749f4c4b911df95895cbf38dab7 Mon Sep 17 00:00:00 2001 From: ya Date: Sat, 26 Jun 2021 20:50:24 -0300 Subject: [PATCH 11/11] feat: add config do bloco dinamico --- servers/variables.tf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/servers/variables.tf b/servers/variables.tf index 32eca42..dce755a 100644 --- a/servers/variables.tf +++ b/servers/variables.tf @@ -5,3 +5,12 @@ variable "hash_commit" { variable "servers" { } + +variable "blocks" { + type = list(object({ + device_name = string + volume_size = string + volume_type = string + })) + description = "List of EBS Block" +} \ No newline at end of file