adding skeleton infrastructure for web and data

This commit is contained in:
Andy Pack 2023-09-01 23:27:50 +01:00
commit a7601bf3af
Signed by: sarsoo
GPG Key ID: A55BA3536A5E0ED7
11 changed files with 156 additions and 0 deletions

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
.terraform
.terraform*
*.tfstate*
terraform.tfvars

5
README.md Normal file
View File

@ -0,0 +1,5 @@
Selector Infra
====================
Terraform IaC for [Selector](https://selector.sarsoo.xyz).
Each environment requires credentials in text variable format as `terraform.tfvars` in each folder.

42
modules/data/main.tf Normal file
View File

@ -0,0 +1,42 @@
resource "azurerm_postgresql_server" "selector" {
name = var.data_name
location = var.resource_group_location
resource_group_name = var.resource_group_name
administrator_login = "psqladmin"
administrator_login_password = "H@Sh1CoR3!"
sku_name = "B_Gen5_1"
version = "11"
# storage_mb = 640000
backup_retention_days = 7
# geo_redundant_backup_enabled = false
# auto_grow_enabled = false
# public_network_access_enabled = false
ssl_enforcement_enabled = true
ssl_minimal_tls_version_enforced = "TLS1_2"
}
resource "azurerm_postgresql_database" "selector" {
charset = "UTF8"
collation = "en-GB"
name = var.data_name
resource_group_name = var.resource_group_name
server_name = azurerm_postgresql_server.selector.name
}
resource "azurerm_redis_cache" "selector" {
name = var.data_name
location = var.resource_group_location
resource_group_name = var.resource_group_name
capacity = 1
family = "C"
sku_name = "Standard"
enable_non_ssl_port = false
minimum_tls_version = "1.2"
redis_configuration {
}
}

0
modules/data/outputs.tf Normal file
View File

11
modules/data/variables.tf Normal file
View File

@ -0,0 +1,11 @@
variable "resource_group_name" {
type = string
}
variable "resource_group_location" {
type = string
}
variable "data_name" {
type = string
}

View File

@ -0,0 +1,18 @@
resource "azurerm_service_plan" "selector" {
name = var.site_name
resource_group_name = var.resource_group_name
location = var.resource_group_location
os_type = "Linux"
sku_name = "F1"
}
resource "azurerm_linux_web_app" "example" {
name = var.site_name
resource_group_name = var.resource_group_name
location = azurerm_service_plan.selector.location
service_plan_id = azurerm_service_plan.selector.id
site_config {
always_on = false
}
}

View File

View File

@ -0,0 +1,11 @@
variable "resource_group_name" {
type = string
}
variable "resource_group_location" {
type = string
}
variable "site_name" {
type = string
}

44
prod/main.tf Normal file
View File

@ -0,0 +1,44 @@
terraform {
backend "local" {}
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.71.0"
}
}
}
provider "azurerm" {
features {}
subscription_id = var.azure_subscription_id
client_id = var.azure_client_id
client_secret = var.azure_client_secret
tenant_id = var.azure_tenant_id
}
locals {
env_name = "selector-prod"
}
resource "azurerm_resource_group" "selector" {
name = local.env_name
location = "UK South"
}
# module "web_service" {
# source = "../modules/web_service"
# resource_group_name = azurerm_resource_group.selector.name
# resource_group_location = azurerm_resource_group.selector.location
# site_name = "${local.env_name}-web"
# }
# module "data" {
# source = "../modules/data"
# resource_group_name = azurerm_resource_group.selector.name
# resource_group_location = azurerm_resource_group.selector.location
# data_name = "${local.env_name}-data"
# }

0
prod/outputs.tf Normal file
View File

19
prod/variables.tf Normal file
View File

@ -0,0 +1,19 @@
variable "azure_subscription_id" {
type = string
}
variable "azure_client_id" {
type = string
}
variable "azure_client_secret" {
type = string
}
variable "azure_tenant_id" {
type = string
}
variable "azure_admin_password" {
type = string
}