-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from Victor-Borges-Silva/melhoria-tfvars
Melhoria tfvars
- Loading branch information
Showing
9 changed files
with
572 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
name: Terraform Apply | ||
on: | ||
push: | ||
branches: | ||
- main | ||
|
||
jobs: | ||
terraform-apply: | ||
runs-on: ubuntu-latest | ||
|
||
environment: prd | ||
|
||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set up Terraform | ||
uses: hashicorp/setup-terraform@v2 | ||
|
||
- name: Configure AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v2 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
aws-region: us-west-1 | ||
|
||
- uses: webfactory/[email protected] | ||
with: | ||
ssh-private-key: "${{ secrets.SSH_PRIVATE_KEY }}" | ||
|
||
- name: Terraform Init | ||
run: terraform init | ||
|
||
- name: Terraform Plan | ||
id: plan | ||
run: terraform plan -out=plano | ||
|
||
- name: Terraform Apply | ||
run: terraform apply -auto-approve plano | ||
|
||
- name: Clean up plan file | ||
run: rm -f plano |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,85 @@ | ||
# terraform-aws-Victor-Borges-Silva_iac | ||
Repositório destinado ao projeto final. | ||
|
||
# Repositório auxiliar para checagem de segurança | ||
https://github.com/aquasecurity/tfsec | ||
|
||
# Repositório auxiliar para criação do README | ||
https://github.com/terraform-docs/terraform-docs | ||
|
||
<!-- BEGIN_TF_DOCS --> | ||
## Requirements | ||
|
||
| Name | Version | | ||
|------|---------| | ||
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | 5.58.0 | | ||
|
||
## Providers | ||
|
||
No providers. | ||
|
||
## Modules | ||
|
||
| Name | Source | Version | | ||
|------|--------|---------| | ||
| <a name="module_Backup"></a> [Backup](#module\_Backup) | ../Modulo-bakcup/ | n/a | | ||
| <a name="module_cloudwatch_desliga"></a> [cloudwatch\_desliga](#module\_cloudwatch\_desliga) | ../Modulo-cloudwatch-desliga/ | n/a | | ||
| <a name="module_cloudwatch_inicia"></a> [cloudwatch\_inicia](#module\_cloudwatch\_inicia) | ../Modulo-cloudwatch-inicia/ | n/a | | ||
| <a name="module_iam_policy_role"></a> [iam\_policy\_role](#module\_iam\_policy\_role) | ../Modulo-iam/ | n/a | | ||
| <a name="module_instancias"></a> [instancias](#module\_instancias) | ../Modulo-instancias/ | n/a | | ||
| <a name="module_lambda_desliga"></a> [lambda\_desliga](#module\_lambda\_desliga) | ../Modulo-lambda-desliga/ | n/a | | ||
| <a name="module_lambda_inicia"></a> [lambda\_inicia](#module\_lambda\_inicia) | ../Modulo-lambda-inicia/ | n/a | | ||
|
||
## Resources | ||
|
||
No resources. | ||
|
||
## Inputs | ||
|
||
| Name | Description | Type | Default | Required | | ||
|------|-------------|------|---------|:--------:| | ||
| <a name="input_agendamento_backup"></a> [agendamento\_backup](#input\_agendamento\_backup) | Agendamento do backup | `string` | n/a | yes | | ||
| <a name="input_agendamento_cron"></a> [agendamento\_cron](#input\_agendamento\_cron) | Agendamento em formato cron para iniciar a função | `string` | n/a | yes | | ||
| <a name="input_armazenamento_temporario"></a> [armazenamento\_temporario](#input\_armazenamento\_temporario) | description | `number` | n/a | yes | | ||
| <a name="input_cloudwatch_inicia_name"></a> [cloudwatch\_inicia\_name](#input\_cloudwatch\_inicia\_name) | Nome do CloudWatch Inicia | `string` | n/a | yes | | ||
| <a name="input_cloudwatch_inicio_description"></a> [cloudwatch\_inicio\_description](#input\_cloudwatch\_inicio\_description) | Descrição para o início do CloudWatch | `string` | n/a | yes | | ||
| <a name="input_description_role_backup"></a> [description\_role\_backup](#input\_description\_role\_backup) | Descrição para função IAM que permite o cofre gerenciar os backups | `string` | n/a | yes | | ||
| <a name="input_desliga_agendamento_cron"></a> [desliga\_agendamento\_cron](#input\_desliga\_agendamento\_cron) | Agendamento em formato cron para desligar a função | `string` | n/a | yes | | ||
| <a name="input_desliga_cloudwatch_desliga_description"></a> [desliga\_cloudwatch\_desliga\_description](#input\_desliga\_cloudwatch\_desliga\_description) | Descrição para o desligamento no CloudWatch | `string` | n/a | yes | | ||
| <a name="input_desliga_cloudwatch_desliga_name"></a> [desliga\_cloudwatch\_desliga\_name](#input\_desliga\_cloudwatch\_desliga\_name) | Nome do CloudWatch para Desligar | `string` | n/a | yes | | ||
| <a name="input_desliga_estado"></a> [desliga\_estado](#input\_desliga\_estado) | Estado da instância ou recurso no processo de desligamento | `string` | n/a | yes | | ||
| <a name="input_desliga_evento_cloudwatch"></a> [desliga\_evento\_cloudwatch](#input\_desliga\_evento\_cloudwatch) | Descrição do evento do CloudWatch para desligamento | `string` | n/a | yes | | ||
| <a name="input_desliga_nome_alvo"></a> [desliga\_nome\_alvo](#input\_desliga\_nome\_alvo) | Nome do alvo da função ou evento de desligamento | `string` | n/a | yes | | ||
| <a name="input_desliga_statement_id"></a> [desliga\_statement\_id](#input\_desliga\_statement\_id) | ID do statement para a política de desligamento | `string` | n/a | yes | | ||
| <a name="input_estado"></a> [estado](#input\_estado) | Estado da instância ou recurso | `string` | n/a | yes | | ||
| <a name="input_evento_cloudwatch"></a> [evento\_cloudwatch](#input\_evento\_cloudwatch) | Descrição do evento do CloudWatch | `string` | n/a | yes | | ||
| <a name="input_force_destruir"></a> [force\_destruir](#input\_force\_destruir) | Flag para forçar a destruição | `bool` | n/a | yes | | ||
| <a name="input_inicio_manutencao"></a> [inicio\_manutencao](#input\_inicio\_manutencao) | Data e hora de início da manutenção | `number` | n/a | yes | | ||
| <a name="input_janela_manutencao"></a> [janela\_manutencao](#input\_janela\_manutencao) | Janela de tempo para a manutenção | `number` | n/a | yes | | ||
| <a name="input_nome_alvo"></a> [nome\_alvo](#input\_nome\_alvo) | Nome do alvo da função ou evento | `string` | n/a | yes | | ||
| <a name="input_nome_cofre"></a> [nome\_cofre](#input\_nome\_cofre) | Nome do Cofre | `string` | n/a | yes | | ||
| <a name="input_nome_funcao_desliga"></a> [nome\_funcao\_desliga](#input\_nome\_funcao\_desliga) | description | `string` | n/a | yes | | ||
| <a name="input_nome_funcao_inicia"></a> [nome\_funcao\_inicia](#input\_nome\_funcao\_inicia) | description | `string` | n/a | yes | | ||
| <a name="input_nome_plano_backup"></a> [nome\_plano\_backup](#input\_nome\_plano\_backup) | Nome do plano de backup | `string` | n/a | yes | | ||
| <a name="input_nome_regra"></a> [nome\_regra](#input\_nome\_regra) | Nome da regra | `string` | n/a | yes | | ||
| <a name="input_nome_role_backup"></a> [nome\_role\_backup](#input\_nome\_role\_backup) | Nome da role/função para permitir o AWSBackup gerenciar os pontos de restauração | `string` | n/a | yes | | ||
| <a name="input_nome_selecao_alvo_tag"></a> [nome\_selecao\_alvo\_tag](#input\_nome\_selecao\_alvo\_tag) | Nome da tag do alvo de seleção | `string` | n/a | yes | | ||
| <a name="input_numero_de_ec2"></a> [numero\_de\_ec2](#input\_numero\_de\_ec2) | Quantidade de instancias EC2 a ser provisionada | `number` | n/a | yes | | ||
| <a name="input_policy_description"></a> [policy\_description](#input\_policy\_description) | description | `string` | n/a | yes | | ||
| <a name="input_policy_name"></a> [policy\_name](#input\_policy\_name) | Nome da politica | `string` | n/a | yes | | ||
| <a name="input_quantidade_dias_para_delecao"></a> [quantidade\_dias\_para\_delecao](#input\_quantidade\_dias\_para\_delecao) | Quantidade de dias para a deleção | `number` | n/a | yes | | ||
| <a name="input_rastreio_log"></a> [rastreio\_log](#input\_rastreio\_log) | description | `string` | n/a | yes | | ||
| <a name="input_role_description"></a> [role\_description](#input\_role\_description) | Nome da role | `string` | n/a | yes | | ||
| <a name="input_role_name"></a> [role\_name](#input\_role\_name) | Nome da Funcao | `string` | n/a | yes | | ||
| <a name="input_selecao_recurso_tag_key"></a> [selecao\_recurso\_tag\_key](#input\_selecao\_recurso\_tag\_key) | Chave da tag para seleção de recurso | `string` | n/a | yes | | ||
| <a name="input_selecao_recurso_tag_type"></a> [selecao\_recurso\_tag\_type](#input\_selecao\_recurso\_tag\_type) | Tipo da tag para seleção de recurso | `string` | n/a | yes | | ||
| <a name="input_selecao_recurso_tag_value"></a> [selecao\_recurso\_tag\_value](#input\_selecao\_recurso\_tag\_value) | Valor da tag para seleção de recurso | `string` | n/a | yes | | ||
| <a name="input_statement_id"></a> [statement\_id](#input\_statement\_id) | ID do statement para a política | `string` | n/a | yes | | ||
| <a name="input_tamanho_memoria"></a> [tamanho\_memoria](#input\_tamanho\_memoria) | description | `number` | n/a | yes | | ||
| <a name="input_timeout"></a> [timeout](#input\_timeout) | description | `number` | n/a | yes | | ||
| <a name="input_tipo_instancia"></a> [tipo\_instancia](#input\_tipo\_instancia) | Tipo de instancia EC2 a ser provisionada | `string` | n/a | yes | | ||
|
||
## Outputs | ||
|
||
No outputs. | ||
<!-- END_TF_DOCS --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,63 +1,134 @@ | ||
module "instancias" { | ||
source = "[email protected]:Victor-Borges-Silva/Modulo-instancias.git?ref=v1.0.2" | ||
numero_de_ec2 = 3 | ||
#source = "[email protected]:Victor-Borges-Silva/Modulo-instancias.git?ref=v1.0.4" | ||
source = "../Modulo-instancias/" | ||
|
||
numero_de_ec2 = var.numero_de_ec2 | ||
tipo_instancia = var.tipo_instancia | ||
|
||
#for_each = { for atributo in var.tags : atributo.Name => atributo } | ||
#tags = { | ||
# Name = each.value.Name | ||
# Terraform = each.value.Terraform | ||
# Environment = each.value.Environment | ||
# Backup = each.value.Backup | ||
#} | ||
|
||
tags = { | ||
Name = "Teste" | ||
Name = "Projeto_Final" | ||
Terraform = "Sim" | ||
Environment = "Dev" | ||
Backup = "true" | ||
} | ||
|
||
} | ||
|
||
|
||
module "iam_policy_role" { | ||
source = "[email protected]:Victor-Borges-Silva/Modulo-iam.git?ref=v1.0.1" | ||
#source = "[email protected]:Victor-Borges-Silva/Modulo-iam.git?ref=v1.0.5" | ||
source = "../Modulo-iam/" | ||
# for_each = { for idx, atributo in var.modulo_iam_policy_role : idx.atributo => idx } | ||
# | ||
# #Criação da politica para EC2 | ||
# policy_name = each.value.policy_name | ||
# policy_description = each.value.policy_description | ||
# | ||
# #Criação da role para EC2 | ||
# role_name = each.value.role_name | ||
# role_description = each.value.role_description | ||
# | ||
# #Criação de role para AWSBackup | ||
# nome_role_backup = each.value.nome_role_backup | ||
# description_role_backup = each.value.description_role_backup | ||
|
||
#Criação da politica | ||
policy_name = "Inicia_Desliga_EC2" | ||
policy_description = "Policy que permite o Lambda a desligar e ligar as instâncias EC2" | ||
#Criação da politica para EC2 | ||
policy_name = var.policy_name | ||
policy_description = var.policy_description | ||
|
||
#Criação da Role | ||
role_name = "Inicia_Desliga_EC2" | ||
role_description = "Função que permite o Lambda a desligar e ligar as instâncias EC2" | ||
#Criação da role para EC2 | ||
role_name = var.role_name | ||
role_description = var.role_description | ||
|
||
#Criação de role para AWSBackup | ||
nome_role_backup = var.nome_role_backup | ||
description_role_backup = var.description_role_backup | ||
} | ||
|
||
locals { | ||
instance_id = tolist(module.instancias.instance_id) | ||
} | ||
|
||
module "lambda_inicia" { | ||
#source = "../../../Modulo-lambda-inicia" | ||
source = "[email protected]:Victor-Borges-Silva/Modulo-lambda-inicia.git?ref=v1.0.2" | ||
nome_funcao_inicia = "IniciaEC2" | ||
instancia_id = module.instancias.instance_id | ||
role = module.iam_policy_role.iam_role_arn | ||
#source = "[email protected]:Victor-Borges-Silva/Modulo-lambda-inicia.git?ref=v1.0.5" | ||
source = "../Modulo-lambda-inicia/" | ||
nome_funcao_inicia = var.nome_funcao_inicia | ||
instancia_id = local.instance_id | ||
role = module.iam_policy_role.iam_role_arn_ec2 | ||
tamanho_memoria = var.tamanho_memoria | ||
timeout = var.timeout | ||
armazenamento_temporario = var.armazenamento_temporario | ||
rastreio_log = var.rastreio_log | ||
|
||
depends_on = [module.iam_policy_role] | ||
} | ||
|
||
module "lambda_desliga" { | ||
#source = "../../../Modulo-lambda-desliga" | ||
source = "[email protected]:Victor-Borges-Silva/Modulo-lambda-desliga.git?ref=v1.0.2" | ||
nome_funcao_desliga = "DesligaEC2" | ||
instancia_id = module.instancias.instance_id | ||
role = module.iam_policy_role.iam_role_arn | ||
#source = "[email protected]:Victor-Borges-Silva/Modulo-lambda-desliga.git?ref=v1.0.4" | ||
source = "../Modulo-lambda-desliga/" | ||
nome_funcao_desliga = var.nome_funcao_desliga | ||
instancia_id = local.instance_id | ||
role = module.iam_policy_role.iam_role_arn_ec2 | ||
tamanho_memoria = var.tamanho_memoria | ||
timeout = var.timeout | ||
armazenamento_temporario = var.armazenamento_temporario | ||
rastreio_log = var.rastreio_log | ||
|
||
depends_on = [module.iam_policy_role] | ||
} | ||
|
||
module "cloudwatch_inicia" { | ||
#source = "../../../Modulo-cloudwatch-inicia" | ||
source = "[email protected]:Victor-Borges-Silva/Modulo-cloudwatch-inicia.git?ref=v1.0.1" | ||
cloudwatch_inicia_name = "Horario_de_inicio" | ||
cloudwatch_inicio_description = "Agendamento para desligar as instancias" | ||
aws_region_inicia = "us-west-1" | ||
statement_id = "permite_EventBridge_executar_lambda_inicia" | ||
#source = "[email protected]:Victor-Borges-Silva/Modulo-cloudwatch-inicia.git?ref=v1.0.3" | ||
source = "../Modulo-cloudwatch-inicia/" | ||
cloudwatch_inicia_name = var.cloudwatch_inicia_name | ||
agendamento_cron = var.agendamento_cron | ||
estado = var.estado | ||
evento_cloudwatch = var.evento_cloudwatch | ||
cloudwatch_inicio_description = var.cloudwatch_inicio_description | ||
statement_id = var.statement_id | ||
nome_alvo = var.nome_alvo | ||
lambda_function_arn_inicia = module.lambda_inicia.lambda_function_arn | ||
lambda_function_name_inicia = module.lambda_inicia.lambda_function_name_inicia | ||
} | ||
|
||
module "cloudwatch_desliga" { | ||
#source = "../../../Modulo-cloudwatch-desliga" | ||
source = "[email protected]:Victor-Borges-Silva/Modulo-cloudwatch-desliga.git?ref=v1.0.1" | ||
cloudwatch_desliga_name = "Horario_de_desligamento" | ||
cloudwatch_desliga_description = "Agendamento para desligar as instancias" | ||
aws_region_desliga = "us-west-1" | ||
statement_id = "permite_EventBridge_executar_lambda_desliga" | ||
#source = "[email protected]:Victor-Borges-Silva/Modulo-cloudwatch-desliga.git?ref=v1.0.3" | ||
source = "../Modulo-cloudwatch-desliga/" | ||
cloudwatch_desliga_name = var.desliga_cloudwatch_desliga_name | ||
agendamento_cron = var.desliga_agendamento_cron | ||
estado = var.desliga_estado | ||
evento_cloudwatch = var.desliga_evento_cloudwatch | ||
cloudwatch_desliga_description = var.desliga_cloudwatch_desliga_description | ||
statement_id = var.desliga_statement_id | ||
nome_alvo = var.desliga_nome_alvo | ||
lambda_function_arn_desliga = module.lambda_desliga.lambda_function_arn | ||
lambda_function_name_desliga = module.lambda_desliga.lambda_function_name_desliga | ||
} | ||
} | ||
|
||
module "Backup" { | ||
#source = "[email protected]:Victor-Borges-Silva/Modulo-bakcup.git?ref=v1.0.4" | ||
source = "../Modulo-bakcup/" | ||
nome_cofre = var.nome_cofre | ||
force_destruir = var.force_destruir | ||
nome_plano_backup = var.nome_plano_backup | ||
nome_regra = var.nome_regra | ||
agendamento_backup = var.agendamento_backup # agendametno é feito conforme horário UTC +00 | ||
inicio_manutencao = var.inicio_manutencao #Especifique(em minutos) o período em que o plano de backup será iniciado, caso não comece no horário especificado. | ||
janela_manutencao = var.janela_manutencao #Defina(em minutos) o período durante o qual o backup deve ser concluído antes de retornar qualquer erro por timeout. | ||
quantidade_dias_para_delecao = var.quantidade_dias_para_delecao | ||
nome_selecao_alvo_tag = var.nome_selecao_alvo_tag | ||
iam_role_arn_backup = module.iam_policy_role.iam_role_arn_backup | ||
selecao_recurso_tag_type = var.selecao_recurso_tag_type | ||
selecao_recurso_tag_key = var.selecao_recurso_tag_key | ||
selecao_recurso_tag_value = var.selecao_recurso_tag_value | ||
|
||
depends_on = [module.iam_policy_role] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,7 @@ | ||
output "ARN_iam_role" { | ||
value = module.iam_policy_role.iam_role_arn | ||
} | ||
#output "ARN_iam_role" { | ||
# value = module.iam_policy_role.Inicia_Desliga_EC2.arn | ||
#} | ||
|
||
#output "instance_id" { | ||
# value = module.instancias.web.id | ||
#} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.