Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

provider/azurerm: Add example of CDN with Storage Account #14193

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
9f0d990
initial commit - 101-vm-from-user-image
anniehedgpeth Apr 18, 2017
6f577a8
changed branch name
anniehedgpeth Apr 19, 2017
611d70a
not deploying - storage problems
anniehedgpeth Apr 21, 2017
fdff23a
provisions vm but image not properly prepared
anniehedgpeth Apr 21, 2017
0dac5ec
storage not correct
anniehedgpeth Apr 21, 2017
81e2559
provisions properly
anniehedgpeth Apr 22, 2017
7dc8150
changed main.tf to azuredeploy.tf
anniehedgpeth Apr 22, 2017
5c079fa
added tfvars and info for README
anniehedgpeth Apr 22, 2017
c86ef6f
tfvars ignored and corrected file ext
anniehedgpeth Apr 22, 2017
534b236
added CI config; added sane defaults for variables; updated deploymen…
Apr 24, 2017
0cf888b
deploy.sh to be executable
Apr 24, 2017
68f0003
executable deploy files
Apr 24, 2017
c898510
added CI files; changed vars
anniehedgpeth Apr 25, 2017
9d1541c
merge upstream/master
Apr 25, 2017
5c8ecd8
prep for PR
Apr 25, 2017
0267fca
removal of old folder
Apr 25, 2017
f9bf6ba
prep for PR
Apr 25, 2017
cec0679
wrong args for travis
Apr 25, 2017
d78e8bd
more PR prep
Apr 26, 2017
6bf2df2
updated README
anniehedgpeth Apr 26, 2017
b22cff0
commented out variables in terraform.tfvars
Apr 26, 2017
09175de
Merge branch 'topic-101-vm-from-user-image' of https://github.com/10t…
anniehedgpeth Apr 26, 2017
0843f45
Topic 101 vm from user image (#2)
scottzilla Apr 26, 2017
49caea5
added new template
Apr 26, 2017
2236828
oops, left off master
Apr 26, 2017
27167b5
Merge branch 'master' of github.com:harijayms/terraform
Apr 26, 2017
5b8f7bb
merge upstream; prep for PR
Apr 26, 2017
7f8fe25
prep for PR
Apr 27, 2017
eecb2d2
correct repository for destination
Apr 27, 2017
92e341d
renamed scripts to be more intuitive; added check for docker
Apr 27, 2017
23627c8
merge vm simple; vm from image
Apr 27, 2017
ac2e5c2
initial commit
anniehedgpeth Apr 27, 2017
935c19a
deploys locally
anniehedgpeth Apr 27, 2017
66b7441
updated deploy
anniehedgpeth Apr 27, 2017
50e8d8a
changed to allow http & https (like ARM tmplt)
anniehedgpeth Apr 27, 2017
ace9b0b
changed host_name & host_name variable desc
anniehedgpeth Apr 27, 2017
fd0231b
added cdn branch; ci uses running vm to test
anniehedgpeth Apr 28, 2017
d8ef7b1
prep for PR
May 1, 2017
25ef50c
took out armviz button and minor README changes
anniehedgpeth May 2, 2017
63c494d
changed host_name
anniehedgpeth May 2, 2017
9a5a15a
fixed merge conflicts
anniehedgpeth May 2, 2017
d7e2acb
changed host_name variable
anniehedgpeth May 2, 2017
dbaf8d1
updating Hashicorp's changes to merged simple linux branch
anniehedgpeth May 3, 2017
b850cd5
updating files to merge w/master and prep for Hashicorp pr
anniehedgpeth May 3, 2017
26a4c33
reverted to Hashicorp's .travis.yml
anniehedgpeth May 3, 2017
83b16f0
terraform graph
anniehedgpeth May 3, 2017
9148c1c
removing pending example
anniehedgpeth May 3, 2017
97bcdfd
Merge branch 'master' of https://github.com/hashicorp/terraform into …
anniehedgpeth May 3, 2017
be98dab
cleaned up deploy.ci.sh
anniehedgpeth May 4, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions examples/azure-cdn-with-storage-account/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Create a CDN Profile, a CDN Endpoint with a Storage Account as origin

This Terraform template was based on [this](https://github.com/Azure/azure-quickstart-templates/tree/master/201-cdn-with-storage-account) Azure Quickstart Template. Changes to the ARM template that may have occurred since the creation of this example may not be reflected in this Terraform template.

This template creates a [CDN Profile](https://docs.microsoft.com/en-us/azure/cdn/cdn-overview) and a CDN Endpoint with the origin as a Storage Account. Note that the user needs to create a public container in the Storage Account in order for CDN Endpoint to serve content from the Storage Account.

# Important

The endpoint will not immediately be available for use, as it takes time for the registration to propagate through the CDN. For Azure CDN from Akamai profiles, propagation will usually complete within one minute. For Azure CDN from Verizon profiles, propagation will usually complete within 90 minutes, but in some cases can take longer.

Users who try to use the CDN domain name before the endpoint configuration has propagated to the POPs will receive HTTP 404 response codes. If it has been several hours since you created your endpoint and you're still receiving 404 responses, please see [Troubleshooting CDN endpoints returning 404 statuses](https://docs.microsoft.com/en-us/azure/cdn/cdn-troubleshoot-endpoint).

## 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.
29 changes: 29 additions & 0 deletions examples/azure-cdn-with-storage-account/deploy.ci.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/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"

# 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;"
15 changes: 15 additions & 0 deletions examples/azure-cdn-with-storage-account/deploy.mac.sh
Original file line number Diff line number Diff line change
@@ -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 added examples/azure-cdn-with-storage-account/graph.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
39 changes: 39 additions & 0 deletions examples/azure-cdn-with-storage-account/main.tf
Original file line number Diff line number Diff line change
@@ -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_storage_account" "stor" {
name = "${var.resource_group}stor"
location = "${var.location}"
resource_group_name = "${azurerm_resource_group.rg.name}"
account_type = "${var.storage_account_type}"
}

resource "azurerm_cdn_profile" "cdn" {
name = "${var.resource_group}CdnProfile1"
location = "${var.location}"
resource_group_name = "${azurerm_resource_group.rg.name}"
sku = "Standard_Akamai"
}

resource "azurerm_cdn_endpoint" "cdnendpt" {
name = "${var.resource_group}CdnEndpoint1"
profile_name = "${azurerm_cdn_profile.cdn.name}"
location = "${var.location}"
resource_group_name = "${azurerm_resource_group.rg.name}"

origin {
name = "${var.resource_group}Origin1"
host_name = "${var.host_name}"
http_port = 80
https_port = 443
}
}
3 changes: 3 additions & 0 deletions examples/azure-cdn-with-storage-account/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
output "CDN Endpoint ID" {
value = "${azurerm_cdn_endpoint.cdnendpt.name}.azureedge.net"
}
18 changes: 18 additions & 0 deletions examples/azure-cdn-with-storage-account/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
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 "storage_account_type" {
description = "Specifies the type of the storage account"
default = "Standard_LRS"
}

variable "host_name" {
description = "A string that determines the hostname/IP address of the origin server. This string could be a domain name, IPv4 address or IPv6 address."
default = "www.hostnameoforiginserver.com"
}
2 changes: 1 addition & 1 deletion examples/azure-vm-simple-linux-managed-disk/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ Azure requires that an application is added to Azure Active Directory to generat
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.
The `variables.tf` file contains all of the input parameters that the user can specify when deploying this Terraform template.
2 changes: 1 addition & 1 deletion examples/azure-vm-simple-linux-managed-disk/deploy.ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ docker run --rm -it \
--workdir=/data \
--entrypoint "/bin/sh" \
hashicorp/terraform:light \
-c "/bin/terraform destroy -force -var dns_name=$KEY -var hostname=$KEY -var resource_group=$KEY -var admin_password=$PASSWORD;"
-c "/bin/terraform destroy -force -var dns_name=$KEY -var hostname=$KEY -var resource_group=$KEY -var admin_password=$PASSWORD;"
2 changes: 1 addition & 1 deletion examples/azure-vm-simple-linux-managed-disk/deploy.mac.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ if docker -v; then

else
echo "Docker is used to run terraform commands, please install before run: https://docs.docker.com/docker-for-mac/install/"
fi
fi
2 changes: 1 addition & 1 deletion examples/azure-vm-simple-linux-managed-disk/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,4 @@ resource "azurerm_virtual_machine" "vm" {
enabled = true
storage_uri = "${azurerm_storage_account.stor.primary_blob_endpoint}"
}
}
}
2 changes: 1 addition & 1 deletion examples/azure-vm-simple-linux-managed-disk/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ output "vm_fqdn" {

output "ssh_command" {
value = "ssh ${var.admin_username}@${azurerm_public_ip.pip.fqdn}"
}
}
2 changes: 1 addition & 1 deletion examples/azure-vm-simple-linux-managed-disk/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,4 @@ variable "admin_username" {

variable "admin_password" {
description = "administrator password (recommended to disable password auth)"
}
}