provider/azurerm: Add example of sql database (#14649)
* initial commit - 101-vm-from-user-image * changed branch name * not deploying - storage problems * provisions vm but image not properly prepared * storage not correct * provisions properly * changed main.tf to azuredeploy.tf * added tfvars and info for README * tfvars ignored and corrected file ext * added CI config; added sane defaults for variables; updated deployment script, added mac specific deployment for local testing * deploy.sh to be executable * executable deploy files * added CI files; changed vars * prep for PR * removal of old folder * prep for PR * wrong args for travis * more PR prep * updated README * commented out variables in terraform.tfvars * Topic 101 vm from user image (#2) * initial commit - 101-vm-from-user-image * added tfvars and info for README * added CI config; added sane defaults for variables; updated deployment script, added mac specific deployment for local testing * prep for PR * added new template * oops, left off master * prep for PR * correct repository for destination * renamed scripts to be more intuitive; added check for docker * merge vm simple; vm from image * initial commit * deploys locally * updated deploy * consolidated deploy and after_deploy into a single script; simplified ci process; added os_profile_linux_config * added terraform show * changed to allow http & https (like ARM tmplt) * changed host_name & host_name variable desc * added az cli check * on this branch, only build test_dir; master will aggregate all the examples * merge master * added new constructs/naming for deploy scripts, etc. * suppress az login output * suppress az login output * forgot about line breaks * breaking build as an example * fixing broken build example * merge of CI config * fixed grammar in readme * prep for PR * took out armviz button and minor README changes * changed host_name * fixed merge conflicts * changed host_name variable * updating Hashicorp's changes to merged simple linux branch * updating files to merge w/master and prep for Hashicorp pr * Revert "updating files to merge w/master and prep for Hashicorp pr" This reverts commit b850cd5d2a858eff073fc5a1097a6813d0f8b362. * Revert "updating Hashicorp's changes to merged simple linux branch" This reverts commit dbaf8d14a9cdfcef0281919671357f6171ebd4e6. * removing vm from user image example from this branch * removed old branch * azure-2-vms-loadbalancer-lbrules (#13) * initial commit * need to change lb_rule & nic * deploys locally * updated README * updated travis and deploy scripts for Hari's repo * renamed deploy script * clean up * prep for PR * updated readme * fixing conflict in .travis.yml * initial commit; missing resource for transparentDataEncryption * commented out missing resources for TDE * updated .travis.yml * typo fix on .travis.yml * changed directory name to omit TDE * deploy troubleshooting * password troubleshooting * troubleshooting password * merging hashi master into this branch * reverting to Hashicorp's .travis.yml * added graph to README
This commit is contained in:
parent
ac25ac954c
commit
d9fb2cfd04
|
@ -0,0 +1,22 @@
|
|||
# Provision a SQL Database
|
||||
|
||||
This sample creates a SQL Database at the "Basic" service level. The template can support other tiers of service, details for each service can be found here:
|
||||
|
||||
[SQL Database Pricing](https://azure.microsoft.com/en-us/pricing/details/sql-database/)
|
||||
|
||||
## main.tf
|
||||
The `main.tf` file contains the actual resources that will be deployed. It also contains the Azure Resource Group definition and any defined variables.
|
||||
|
||||
## outputs.tf
|
||||
This data is outputted when `terraform apply` is called, and can be queried using the `terraform output` command.
|
||||
|
||||
## provider.tf
|
||||
Azure requires that an application is added to Azure Active Directory to generate the `client_id`, `client_secret`, and `tenant_id` needed by Terraform (`subscription_id` can be recovered from your Azure account details). Please go [here](https://www.terraform.io/docs/providers/azurerm/) for full instructions on how to create this to populate your `provider.tf` file.
|
||||
|
||||
## terraform.tfvars
|
||||
If a `terraform.tfvars` file is present in the current directory, Terraform automatically loads it to populate variables. We don't recommend saving usernames and password to version control, but you can create a local secret variables file and use `-var-file` to load it.
|
||||
|
||||
## variables.tf
|
||||
The `variables.tf` file contains all of the input parameters that the user can specify when deploying this Terraform template.
|
||||
|
||||
![graph](/examples/azure-sql-database/graph.png)
|
|
@ -0,0 +1,37 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -o errexit -o nounset
|
||||
|
||||
docker run --rm -it \
|
||||
-e ARM_CLIENT_ID \
|
||||
-e ARM_CLIENT_SECRET \
|
||||
-e ARM_SUBSCRIPTION_ID \
|
||||
-e ARM_TENANT_ID \
|
||||
-v $(pwd):/data \
|
||||
--workdir=/data \
|
||||
--entrypoint "/bin/sh" \
|
||||
hashicorp/terraform:light \
|
||||
-c "/bin/terraform get; \
|
||||
/bin/terraform validate; \
|
||||
/bin/terraform plan -out=out.tfplan -var resource_group=$KEY -var sql_admin=$KEY -var sql_password=a!@abcd9753w0w@h@12; \
|
||||
/bin/terraform apply out.tfplan; \
|
||||
/bin/terraform show;"
|
||||
|
||||
# check that resources exist via azure cli
|
||||
docker run --rm -it \
|
||||
azuresdk/azure-cli-python \
|
||||
sh -c "az login --service-principal -u $ARM_CLIENT_ID -p $ARM_CLIENT_SECRET --tenant $ARM_TENANT_ID > /dev/null; \
|
||||
az sql db show -g $KEY -n MySQLDatabase -s $KEY-sqlsvr; \
|
||||
az sql server show -g $KEY -n $KEY-sqlsvr;"
|
||||
|
||||
# cleanup deployed azure resources via terraform
|
||||
docker run --rm -it \
|
||||
-e ARM_CLIENT_ID \
|
||||
-e ARM_CLIENT_SECRET \
|
||||
-e ARM_SUBSCRIPTION_ID \
|
||||
-e ARM_TENANT_ID \
|
||||
-v $(pwd):/data \
|
||||
--workdir=/data \
|
||||
--entrypoint "/bin/sh" \
|
||||
hashicorp/terraform:light \
|
||||
-c "/bin/terraform destroy -force -var resource_group=$KEY -var sql_admin=$KEY -var sql_password=a!@abcd9753w0w@h@12;"
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -o errexit -o nounset
|
||||
|
||||
if docker -v; then
|
||||
|
||||
# generate a unique string for CI deployment
|
||||
export KEY=$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-z' | head -c 12)
|
||||
export PASSWORD=$a@abcd9753w0w@h@12
|
||||
# =$KEY$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'A-Z' | head -c 2)$(cat /dev/urandom | env LC_CTYPE=C tr -cd '0-9' | head -c 2)
|
||||
|
||||
/bin/sh ./deploy.ci.sh
|
||||
|
||||
else
|
||||
echo "Docker is used to run terraform commands, please install before run: https://docs.docker.com/docker-for-mac/install/"
|
||||
fi
|
Binary file not shown.
After Width: | Height: | Size: 100 KiB |
|
@ -0,0 +1,39 @@
|
|||
# provider "azurerm" {
|
||||
# subscription_id = "REPLACE-WITH-YOUR-SUBSCRIPTION-ID"
|
||||
# client_id = "REPLACE-WITH-YOUR-CLIENT-ID"
|
||||
# client_secret = "REPLACE-WITH-YOUR-CLIENT-SECRET"
|
||||
# tenant_id = "REPLACE-WITH-YOUR-TENANT-ID"
|
||||
# }
|
||||
|
||||
resource "azurerm_resource_group" "rg" {
|
||||
name = "${var.resource_group}"
|
||||
location = "${var.location}"
|
||||
}
|
||||
|
||||
resource "azurerm_sql_database" "db" {
|
||||
name = "mysqldatabase"
|
||||
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||
location = "${var.location}"
|
||||
edition = "Basic"
|
||||
collation = "SQL_Latin1_General_CP1_CI_AS"
|
||||
create_mode = "Default"
|
||||
requested_service_objective_name = "Basic"
|
||||
server_name = "${azurerm_sql_server.server.name}"
|
||||
}
|
||||
|
||||
resource "azurerm_sql_server" "server" {
|
||||
name = "${var.resource_group}-sqlsvr"
|
||||
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||
location = "${var.location}"
|
||||
version = "12.0"
|
||||
administrator_login = "${var.sql_admin}"
|
||||
administrator_login_password = "${var.sql_password}"
|
||||
}
|
||||
|
||||
resource "azurerm_sql_firewall_rule" "fw" {
|
||||
name = "firewallrules"
|
||||
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||
server_name = "${azurerm_sql_server.server.name}"
|
||||
start_ip_address = "0.0.0.0"
|
||||
end_ip_address = "0.0.0.0"
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
output "database_name" {
|
||||
value = "${azurerm_sql_database.db.name}"
|
||||
}
|
||||
|
||||
output "sql_server_fqdn" {
|
||||
value = "${azurerm_sql_server.server.fully_qualified_domain_name}"
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
variable "resource_group" {
|
||||
description = "The name of the resource group in which to create the virtual network."
|
||||
}
|
||||
|
||||
variable "location" {
|
||||
description = "The location/region where the virtual network is created. Changing this forces a new resource to be created."
|
||||
default = "southcentralus"
|
||||
}
|
||||
|
||||
variable "sql_admin" {
|
||||
description = "The administrator username of the SQL Server."
|
||||
}
|
||||
|
||||
variable "sql_password" {
|
||||
description = "The administrator password of the SQL Server."
|
||||
}
|
|
@ -17,4 +17,4 @@ If a `terraform.tfvars` file is present in the current directory, Terraform auto
|
|||
## variables.tf
|
||||
The `variables.tf` file contains all of the input parameters that the user can specify when deploying this Terraform template.
|
||||
|
||||
![graph](/examples/azure-vnet-two-subnets/graph.png)
|
||||
![graph](/examples/azure-vnet-two-subnets/graph.png)
|
||||
|
|
Loading…
Reference in New Issue