provider/azurerm: Add example - servicebus-create-topic-and-subscription (#14341)
* 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 * initial commit * 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 * deploys locally; need to fix deploy scripts * chmod for deploy.ci.sh * corrected deploy.ci.sh * added resource group var to travis.yml * merge master * edited travis.yml * fixed error on travis.yml * added new constructs/naming for deploy scripts, etc. * took rg variable out; added destroy resources to travis.yml * cleaned up commented out lines in deploy.ci.sh * 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 * prep for PR * cleanup for PR * 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 * added depends_on resource group for workaround to bug * resolving conflicts * restoring previous examples/resolving merge conflict * resolving conflict * updated .travis.yml * 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 * add CI build tag * updated descriptions * azure-traffic-manager-vm (#17) adding example of azure traffic manager * azure-vnet-to-vnet-peering (#20) adding vnet-to-vnet-peering example * returning .travis.yml to correct state * azure-search-create (#21) adding azure-search-create example * merging Hashicorp master into this branch * added graph to README * removing unmerged examples
This commit is contained in:
parent
68aebee1e5
commit
17cf0e8ba8
|
@ -0,0 +1,22 @@
|
||||||
|
# 201 Create a Servicebus with Topic and Subscription
|
||||||
|
|
||||||
|
For information about using this template, see [Create a Service Bus namespace with Topic and Subscription using an ARM template](http://azure.microsoft.com/documentation/articles/service-bus-resource-manager-namespace-topic/).
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
If you are committing this template to source control, please insure that you add this file to your `.gitignore` file.
|
||||||
|
|
||||||
|
## 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-servicebus-create-topic-and-subscription/graph.png)
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/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 unique=$KEY -var resource_group=$KEY; \
|
||||||
|
/bin/terraform apply out.tfplan; \
|
||||||
|
/bin/terraform show;"
|
||||||
|
|
||||||
|
|
||||||
|
# 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 unique=$KEY -var resource_group=$KEY;"
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/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=$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: 74 KiB |
|
@ -0,0 +1,37 @@
|
||||||
|
# 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_servicebus_namespace" "test" {
|
||||||
|
depends_on = ["azurerm_resource_group.rg"]
|
||||||
|
name = "${var.unique}servicebus"
|
||||||
|
location = "${var.location}"
|
||||||
|
resource_group_name = "${var.resource_group}"
|
||||||
|
sku = "standard"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_servicebus_topic" "test" {
|
||||||
|
name = "${var.unique}Topic"
|
||||||
|
location = "${var.location}"
|
||||||
|
resource_group_name = "${var.resource_group}"
|
||||||
|
namespace_name = "${azurerm_servicebus_namespace.test.name}"
|
||||||
|
|
||||||
|
enable_partitioning = true
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_servicebus_subscription" "test" {
|
||||||
|
name = "${var.unique}Subscription"
|
||||||
|
location = "${var.location}"
|
||||||
|
resource_group_name = "${var.resource_group}"
|
||||||
|
namespace_name = "${azurerm_servicebus_namespace.test.name}"
|
||||||
|
topic_name = "${azurerm_servicebus_topic.test.name}"
|
||||||
|
max_delivery_count = 1
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
output "Namespace Connection String" {
|
||||||
|
value = "${azurerm_servicebus_namespace.test.default_primary_connection_string}"
|
||||||
|
}
|
||||||
|
|
||||||
|
output "Shared Access Policy PrimaryKey" {
|
||||||
|
value = "${azurerm_servicebus_namespace.test.default_primary_key}"
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
variable "resource_group" {
|
||||||
|
description = "The name of the resource group in which to create the Service Bus"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "location" {
|
||||||
|
description = "The location/region where the Service Bus is created. Changing this forces a new resource to be created."
|
||||||
|
default = "southcentralus"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "unique" {
|
||||||
|
description = "a unique string that will be used to comprise the names of the Service Bus, Topic, and Subscription name spaces"
|
||||||
|
}
|
Loading…
Reference in New Issue