User Story 60501: 101-sql-database (#217)

* Part of POC to test generating sample code and articles using OpenAI.

* Changes per Code Review
This commit is contained in:
Tom Archer 2023-04-20 15:41:18 -07:00 committed by GitHub
parent 43fb22bcaf
commit 9550abf245
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 124 additions and 0 deletions

View File

@ -0,0 +1,40 @@
resource "random_pet" "rg_name" {
prefix = var.resource_group_name_prefix
}
resource "azurerm_resource_group" "rg" {
name = random_pet.rg_name.id
location = var.resource_group_location
}
resource "random_pet" "azurerm_mssql_server_name" {
prefix = "sql"
}
resource "random_password" "admin_password" {
count = var.admin_password == null ? 1 : 0
length = 20
special = true
min_numeric = 1
min_upper = 1
min_lower = 1
min_special = 1
}
locals {
admin_password = try(random_password.admin_password[0].result, var.admin_password)
}
resource "azurerm_mssql_server" "server" {
name = random_pet.azurerm_mssql_server_name.id
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
administrator_login = var.admin_username
administrator_login_password = local.admin_password
version = "12.0"
}
resource "azurerm_mssql_database" "db" {
name = var.sql_db_name
server_id = azurerm_mssql_server.server.id
}

View File

@ -0,0 +1,13 @@
output "resource_group_name" {
value = azurerm_resource_group.rg.name
}
output "sql_server_name" {
value = azurerm_mssql_server.server.name
}
output "admin_password" {
sensitive = true
value = local.admin_password
}

View File

@ -0,0 +1,16 @@
terraform {
required_version = ">=1.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
random = {
source = "hashicorp/random"
version = "~>3.0"
}
}
}
provider "azurerm" {
features {}
}

View File

@ -0,0 +1,25 @@
# Azure SQL Database
This template deploys an Azure SQL Database.
## Terraform resource types
- [random_pet](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet)
- [azurerm_resource_group](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group)
- [random_password](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password)
- [azurerm_mssql_server](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/mssql_server)
- [azurerm_mssql_database](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/mssql_database)
## Variables
| Name | Description | Default |
|-|-|-|
| `resource_group_name_prefix` | Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription. | rg |
| `resource_group_location` | Location of the resource group. | eastus |
| `sql_db_name` | The name of the SQL Database. | SampleDB |
| `admin_username` | The administrator username of the SQL logical server. | azureadmin |
| `admin_password` | The administrator password of the SQL logical server. | null; If value is null, a random password is generated. |
## Example
To see how to run this example, see [Create a single database in Azure SQL Database using Terraform](https://learn.microsoft.com/azure/azure-sql/database/single-database-create-terraform-quickstart).

View File

@ -0,0 +1,30 @@
variable "resource_group_location" {
type = string
description = "Location for all resources."
default = "eastus"
}
variable "resource_group_name_prefix" {
type = string
description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
default = "rg"
}
variable "sql_db_name" {
type = string
description = "The name of the SQL Database."
default = "SampleDB"
}
variable "admin_username" {
type = string
description = "The administrator username of the SQL logical server."
default = "azureadmin"
}
variable "admin_password" {
type = string
description = "The administrator password of the SQL logical server."
sensitive = true
default = null
}