terraform:modules2
Table of Contents
Terraform Modules
Structure
tree . +--- input.tf +--- main.tf +--- modules | +--- dynamo_module | | +--- main.tf | | +--- outputs.tf | | +--- README.md | | +--- variables.tf | +--- parameter_module | | +--- main.tf | | +--- outputs.tf | | +--- variables.tf +--- outputs.tf +--- README +--- setup.tf
Root module
setup.tf
# Export key and secret credentials first. # run as -> $ terraform apply terraform { required_providers { aws = { source = "hashicorp/aws" version = "3.74.1" } } backend "s3" { region = "eu-west-2" bucket = "terraform-statefiles" key = "tsg/plan-apply.tfstate" dynamodb_table = "tsg-plan-apply-lockfiles" } }
main.tf
provider "aws" { region = "eu-west-X" default_tags { tags = { name = "ModuleTest" } } } module "dynamo" { source = "./modules/dynamo_module" table_name = "Test_table2" #email_address = "user@company.com" } module "parameters" { source = "./modules/parameter_module" parameter_key = "test_key" parameter_value = "Silly_Parameter" }
output "environment" { value = "prod" } output "table_arn" { value = module.dynamo.arn } output "Parameter_arn" { value = module.parameters.parameter_arn } output "parameter_value" { value = module.parameters.parameter_value sensitive = true }
Modules -> dynamo_module
main.tf
resource "aws_dynamodb_table" "dynamo_table" { name = var.table_name billing_mode = "PAY_PER_REQUEST" hash_key = "UserID" attribute { name = "UserID" type = "S" } tags = { "BuiltBy" = "Terraform" "email" = var.email_address } }
outputs.tf
# Output variable definitions output "arn" { description = "ARN of the VPC" value =aws_dynamodb_table.dynamo_table.arn }
variables.tf
# Input variable definitions variable "table_name" { description = "Name of the table." type = string } variable "email_address" { description = "Owner's email" default = "myemail@company.com" type = string }
Modules -> parameter_module
main.tf
resource "aws_ssm_parameter" "nonsense_parameter" { name = var.parameter_key type = "String" value = var.parameter_value }
outputs.tf
# Output variable definitions output "parameter_value" { description = "Value of Parameter" value = aws_ssm_parameter.nonsense_parameter.value } output "parameter_arn" { description = "ARN of parameter" value = aws_ssm_parameter.nonsense_parameter.arn }
variables.tf
# Input variable definitions variable "email_address" { description = "Owner's email" default = "myparameteremail@company.com" type = string } variable "parameter_key" { description = "Key name" type = string } variable "parameter_value" { description = "value" type = string }
terraform/modules2.txt · Last modified: by andrew