Skip to content

Commit

Permalink
azure-search-create (#21)
Browse files Browse the repository at this point in the history
adding azure-search-create example
  • Loading branch information
anniehedgpeth authored and Abhijeet Gaiha committed May 24, 2017
1 parent b972d56 commit 8a28ae2
Show file tree
Hide file tree
Showing 8 changed files with 131 additions and 0 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ git:

# establish environment variables
env:
- TEST_DIR=examples/azure-search-create
- TEST_DIR=examples/azure-vnet-to-vnet-peering
- TEST_DIR=examples/azure-traffic-manager-vm
- TEST_DIR=examples/azure-vm-from-user-image
Expand Down
24 changes: 24 additions & 0 deletions examples/azure-search-create/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Azure Search service

This Terraform template was based on [this](https://github.com/Azure/azure-quickstart-templates/tree/bf842409eeeeb7c4523add3922b204793eb4d85f/101-azure-search-create) 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 new Azure Search Service.

If you are unclear as to what parameters are allowed you can check the [Azure Search Management REST API docs on MSDN](https://msdn.microsoft.com/en-us/library/azure/dn832687.aspx).

## 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.
36 changes: 36 additions & 0 deletions examples/azure-search-create/deploy.ci.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/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 search_name=$KEY -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 resource list --name $KEY"

# 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 search_name=$KEY -var resource_group=$KEY;"
15 changes: 15 additions & 0 deletions examples/azure-search-create/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-search-create/graph.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions examples/azure-search-create/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# 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_search_service" "search" {
name = "${var.search_name}"
resource_group_name = "${azurerm_resource_group.rg.name}"
location = "${var.location}"
sku = "${var.sku}"
replica_count = "${var.replica_count}"
partition_count = "${var.partition_count}"
}
3 changes: 3 additions & 0 deletions examples/azure-search-create/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
output "Azure Search Service" {
value = "${azurerm_search_service.search.name}"
}
32 changes: 32 additions & 0 deletions examples/azure-search-create/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
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 "search_name" {
description = "Service name must only contain lowercase letters, digits or dashes, cannot use dash as the first two or last one characters, cannot contain consecutive dashes, and is limited between 2 and 60 characters in length."
}

variable "sku" {
description = "Valid values are 'free', 'standard', 'standard2', and 'standard3' (2 & 3 must be enabled on the backend by Microsoft support). 'free' provisions the service in shared clusters. 'standard' provisions the service in dedicated clusters."
default = "standard"
}

variable "replica_count" {
description = "Replicas distribute search workloads across the service. You need 2 or more to support high availability (applies to Basic and Standard only)."
default = 1
}

variable "partition_count" {
description = "Partitions allow for scaling of document count as well as faster indexing by sharding your index over multiple Azure Search units. Allowed values: 1, 2, 3, 4, 6, 12"
default = 1
}

variable "hosting_mode" {
description = "Applicable only for SKU set to standard3. You can set this property to enable a single, high density partition that allows up to 1000 indexes, which is much higher than the maximum indexes allowed for any other SKU. Allowed values: default, highDensity"
default = "default"
}

0 comments on commit 8a28ae2

Please sign in to comment.