From 5ed7f16d1d4cd24e7028b8a606b34b7f7cede5cc Mon Sep 17 00:00:00 2001 From: Annie Hedgpeth Date: Thu, 11 May 2017 11:40:03 -0500 Subject: [PATCH] provider/azurerm: Add example of VNET to VNET Peering (#14338) * 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 * vnet-to-vnet-peering initial commit * 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 * cleaned up commented out section * validate peers via cli * add CI build tag * added graph * added graph; deleted out.tfplan * updating head * updating variable descriptions * added graph to README * updated graph in README * Prepping for Hashicorp PR * removing unneeded files * changed README --- examples/azure-vnet-to-vnet-peering/README.md | 24 ++++++++ .../azure-vnet-to-vnet-peering/deploy.ci.sh | 37 ++++++++++++ .../azure-vnet-to-vnet-peering/deploy.mac.sh | 15 +++++ examples/azure-vnet-to-vnet-peering/graph.png | Bin 0 -> 51015 bytes examples/azure-vnet-to-vnet-peering/main.tf | 56 ++++++++++++++++++ .../azure-vnet-to-vnet-peering/variables.tf | 9 +++ 6 files changed, 141 insertions(+) create mode 100644 examples/azure-vnet-to-vnet-peering/README.md create mode 100755 examples/azure-vnet-to-vnet-peering/deploy.ci.sh create mode 100755 examples/azure-vnet-to-vnet-peering/deploy.mac.sh create mode 100644 examples/azure-vnet-to-vnet-peering/graph.png create mode 100644 examples/azure-vnet-to-vnet-peering/main.tf create mode 100644 examples/azure-vnet-to-vnet-peering/variables.tf diff --git a/examples/azure-vnet-to-vnet-peering/README.md b/examples/azure-vnet-to-vnet-peering/README.md new file mode 100644 index 000000000..cf6318bb9 --- /dev/null +++ b/examples/azure-vnet-to-vnet-peering/README.md @@ -0,0 +1,24 @@ +# VNET to VNET Peering + +This template creates two VNETs in the same location, each containing a single subnet, and creates connections between them using VNET Peering. + +## 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 +You may leave the provider block in the `main.tf`, as it is in this template, or you can create a file called `provider.tf` and add it to your `.gitignore` file. + +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. + +![`terraform graph`](/examples/azure-vnet-to-vnet-peering/graph.png) \ No newline at end of file diff --git a/examples/azure-vnet-to-vnet-peering/deploy.ci.sh b/examples/azure-vnet-to-vnet-peering/deploy.ci.sh new file mode 100755 index 000000000..4b7c1d693 --- /dev/null +++ b/examples/azure-vnet-to-vnet-peering/deploy.ci.sh @@ -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; \ + /bin/terraform apply out.tfplan; \ + /bin/terraform show;" + +# cleanup deployed azure resources 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 network vnet peering show -g $KEY --vnet-name $KEY'-vnet1' -n vNet1-to-vNet2; + az network vnet peering show -g $KEY --vnet-name $KEY'-vnet2' -n vNet2-to-vNet1;" + +# 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;" \ No newline at end of file diff --git a/examples/azure-vnet-to-vnet-peering/deploy.mac.sh b/examples/azure-vnet-to-vnet-peering/deploy.mac.sh new file mode 100755 index 000000000..dfc34c2be --- /dev/null +++ b/examples/azure-vnet-to-vnet-peering/deploy.mac.sh @@ -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 \ No newline at end of file diff --git a/examples/azure-vnet-to-vnet-peering/graph.png b/examples/azure-vnet-to-vnet-peering/graph.png new file mode 100644 index 0000000000000000000000000000000000000000..342a78062d383f7def0c507ea3ea16b0434ddbd9 GIT binary patch literal 51015 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 literal 0 HcmV?d00001 diff --git a/examples/azure-vnet-to-vnet-peering/main.tf b/examples/azure-vnet-to-vnet-peering/main.tf new file mode 100644 index 000000000..6bdfb8a24 --- /dev/null +++ b/examples/azure-vnet-to-vnet-peering/main.tf @@ -0,0 +1,56 @@ +# 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_virtual_network" "vnet1" { + name = "${var.resource_group}-vnet1" + location = "${var.location}" + address_space = ["10.0.0.0/24"] + resource_group_name = "${azurerm_resource_group.rg.name}" + + subnet { + name = "subnet1" + address_prefix = "10.0.0.0/24" + } +} + +resource "azurerm_virtual_network" "vnet2" { + name = "${var.resource_group}-vnet2" + location = "${var.location}" + address_space = ["192.168.0.0/24"] + resource_group_name = "${azurerm_resource_group.rg.name}" + + subnet { + name = "subnet1" + address_prefix = "192.168.0.0/24" + } +} + +resource "azurerm_virtual_network_peering" "peer1" { + name = "vNet1-to-vNet2" + resource_group_name = "${azurerm_resource_group.rg.name}" + virtual_network_name = "${azurerm_virtual_network.vnet1.name}" + remote_virtual_network_id = "${azurerm_virtual_network.vnet2.id}" + allow_virtual_network_access = true + allow_forwarded_traffic = false + allow_gateway_transit = false +} + +resource "azurerm_virtual_network_peering" "peer2" { + name = "vNet2-to-vNet1" + resource_group_name = "${azurerm_resource_group.rg.name}" + virtual_network_name = "${azurerm_virtual_network.vnet2.name}" + remote_virtual_network_id = "${azurerm_virtual_network.vnet1.id}" + allow_virtual_network_access = true + allow_forwarded_traffic = false + allow_gateway_transit = false + use_remote_gateways = false +} diff --git a/examples/azure-vnet-to-vnet-peering/variables.tf b/examples/azure-vnet-to-vnet-peering/variables.tf new file mode 100644 index 000000000..2701af343 --- /dev/null +++ b/examples/azure-vnet-to-vnet-peering/variables.tf @@ -0,0 +1,9 @@ +variable "resource_group" { + description = "The name of the resource group in which the virtual networks are created" + default = "myrg" +} + +variable "location" { + description = "The location/region where the virtual networks are created. Changing this forces a new resource to be created." + default = "southcentralus" +}