├── .gitignore ├── 100-starter-template-with-validation ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-create-availability-set-3FDs ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-create-availability-set ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-create-internal-loadbalancer ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-create-key-vault ├── README.md ├── azuredeploy.json └── metadata.json ├── 101-create-security-group ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-create-storage-account-premium ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-create-storage-account-standard ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-loadbalancer-with-nat-rule ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-networkinterface-with-publicip-vnet ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-public-ip-dns-name ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-rbac-builtinrole-resourcegroup ├── ReadMe.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-rbac-builtinrole-virtualmachine ├── ReadMe.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-simple-linux-vm ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-simple-windows-vm-data-disk ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-simple-windows-vm ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-virtual-network ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-vm-customdata ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-vm-from-user-image ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 101-vm-multiple-data-disk ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 201-2-vms-loadbalancer-lbrules ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 201-discover-private-ip-dynamically ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json ├── metadata.json └── privateip.sh ├── 201-premium-windows-vm-diagnostics-extension ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 201-premium-windows-vm ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── 201-vm-from-specialized-vhd ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── ansible-advancedlinux ├── InitStorage_RAID.yml ├── Readme.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── configure_ansible.sh ├── configure_ssh_root.sh └── metadata.json ├── anti-malware-extension-windows-vm ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── apache2-on-ubuntu-vm ├── azuredeploy.json ├── azuredeploy.parameters.json ├── install_apache.sh ├── metadata.json └── readme.md ├── breaking-change.md ├── chef-json-parameters-ubuntu-vm ├── azuredeploy.json ├── azuredeploy.parameters.json ├── metadata.json └── readme.md ├── cloudera-on-centos ├── .gitattributes ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── data-node.json ├── master-node.json ├── metadata.json ├── name-node.json ├── scripts │ ├── bootstrap-cloudera.sh │ ├── cmxDeployOnIbiza.py │ ├── initialize-cloudera-server.sh │ ├── initialize-master.sh │ ├── initialize-node.sh │ └── prepareDisks.sh ├── server-cert.pem ├── server-cert.pfx ├── shared-resources.json └── upload-keys.ps1 ├── couchbase-ansible ├── InitStorage_RAID.yml ├── Readme.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── configure_ssh_root.sh ├── couchbase_ansible.sh ├── couchbase_parameters.yml ├── couchbase_setup.yml ├── metadata.json └── nginx ├── couchbase-on-ubuntu ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── cluster-nodes-A2.json ├── cluster-nodes-A6.json ├── cluster-nodes-D14.json ├── couchbase-azure-install.sh ├── jumpbox-resources-disabled.json ├── jumpbox-resources-enabled.json ├── metadata.json └── shared-resources.json ├── datastax-enterprise ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── dsenode.sh ├── ephemeral-nodes-resources.json ├── metadata.json ├── opscenter-install-resources.json ├── opscenter-resources.json ├── opscenter.sh └── shared-resources.json ├── datastax-on-ubuntu ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── dsenode.sh ├── ephemeral-nodes-resources.json ├── metadata.json ├── opscenter-install-resources.json ├── opscenter-resources.json ├── opscenter.sh └── shared-resources.json ├── diskraid-ubuntu-vm ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json └── metadata.json ├── django-app ├── azuredeploy.json ├── azuredeploy.parameters.json ├── install_django.sh ├── metadata.json └── readme.md ├── docker-simple-on-ubuntu ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── docker-swarm-cluster ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json └── metadata.json ├── drone-ubuntu-vm ├── azuredeploy.json ├── azuredeploy.parameters.json ├── install_drone.sh ├── metadata.json └── readme.md ├── dsc-extension-iis-server-windows-vm ├── ContosoWebsite.ps1.zip ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── elasticsearch ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── client-nodes-resources.json ├── data-nodes-16disk-resources.json ├── data-nodes-2disk-resources.json ├── data-nodes-4disk-resources.json ├── data-nodes-8disk-resources.json ├── elasticsearch-ubuntu-install.sh ├── empty-resources.json ├── jumpbox-resources.json ├── master-nodes-resources.json ├── metadata.json └── shared-resources.json ├── hortonworks-on-centos ├── .gitattributes ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── cluster-node-16disk.json ├── cluster-node-8disk.json ├── data-node.json ├── master-node.json ├── metadata.json ├── name-node.json ├── scripts │ ├── initialize-master.sh │ ├── initialize-node.sh │ ├── mountDisk.sh │ └── vm-bootstrap.py ├── server-cert.pem ├── server-cert.pfx ├── shared-resources.json └── upload-keys.ps1 ├── jenkins-on-ubuntu ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── jenkAddNode ├── jenkMstrInstall.sh ├── jenkSlaveInstall.sh ├── jenkmaster-resources.json ├── jenkslave-resources.json ├── metadata.json ├── shared-resources-parameters.json └── shared-resources.json ├── kafka-on-ubuntu ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── jumpbox-resources-disabled.json ├── jumpbox-resources-enabled.json ├── kafka-cluster-install.sh ├── metadata.json └── shared-resources.json ├── kafka-ubuntu-multidisks ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── datastore-16disk-resources.json ├── datastore-2disk-resources.json ├── datastore-8disk-resources.json ├── empty-resources.json ├── jumpbox-resources.json ├── kafka-cluster-install.sh ├── metadata.json ├── shared-resources.json └── zookeeper-resources.json ├── lamp-app ├── azuredeploy.json ├── azuredeploy.parameters.json ├── install_lamp.sh ├── metadata.json └── readme.md ├── memcached-multi-vm-ubuntu ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── cache_test.php ├── install_apache.sh ├── install_memcached.sh └── metadata.json ├── mongodb-high-availability ├── README.md ├── arbiter-resources.json ├── azuredeploy-parameters.json ├── azuredeploy.json ├── empty-resources.json ├── jumpbox-resources.json ├── member-resources-D1.json ├── member-resources-D11.json ├── member-resources-D12.json ├── member-resources-D13.json ├── member-resources-D14.json ├── member-resources-D2.json ├── member-resources-D3.json ├── member-resources-D4.json ├── metadata.json ├── mongodb-ubuntu-install.sh └── shared-resources.json ├── mongodb-on-centos ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── metadata.json └── mongo-install-centos.sh ├── mongodb-on-ubuntu ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── metadata.json └── mongo-install-ubuntu.sh ├── nagios-on-ubuntu ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── metadata.json └── nagios-core-install.sh ├── postgresql-on-ubuntu ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── database-16disk-resources.json ├── database-2disk-resources.json ├── database-8disk-resources.json ├── empty-resources.json ├── install_postgresql.sh ├── jumpbox-resources.json ├── metadata.json └── shared-resources.json ├── python-proxy-on-ubuntu ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── metadata.json └── python-proxy-install-ubuntu.sh ├── redis-high-availability ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── empty-resources.json ├── jumpbox-resources.json ├── metadata.json ├── node-resources.json ├── redis-cluster-install.sh ├── redis-cluster-setup.sh ├── redis-sentinel-startup.sh └── shared-resources.json ├── resource-loop-vms-userimage ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json └── metadata.json ├── resource-loop-vms-vnet ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json └── metadata.json ├── shared_scripts ├── README.md └── ubuntu │ └── vm-disk-utils-0.1.sh ├── spark-on-ubuntu ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── jumpbox-resources-disabled.json ├── jumpbox-resources-enabled.json ├── metadata.json ├── shared-resources.json └── spark-cluster-install.sh ├── spark-ubuntu-multidisks ├── README.md ├── azuredeploy-parameters.json ├── azuredeploy.json ├── datastore-16disk-resources.json ├── datastore-2disk-resources.json ├── datastore-8disk-resources.json ├── empty-resources.json ├── jumpbox-resources.json ├── metadata.json ├── shared-resources.json └── spark-cluster-install.sh ├── symantec-extension-windows-vm ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json ├── windows-puppet-agent ├── azuredeploy.json ├── azuredeploy.parameters.json ├── metadata.json └── readme.md ├── windows-vm-push-certificate ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json └── metadata.json └── zookeper-cluster-ubuntu-vm ├── README.md ├── azuredeploy.json ├── azuredeploy.parameters.json ├── metadata.json └── zookeeper.sh /.gitignore: -------------------------------------------------------------------------------- 1 | ansible-advancedlinux/Ansible_ARM.ps1 -------------------------------------------------------------------------------- /100-starter-template-with-validation/README.md: -------------------------------------------------------------------------------- 1 | # Starter template with validation 2 | 3 | This is a starter template that will pass the validation checks. Please read the contributing guide to learn more about what's required for successfully passing validation checks. 4 | 5 | In this example, the template deploys a basic Availability Set resource. This is just a snippet you may want to include in a more complex template. 6 | -------------------------------------------------------------------------------- /100-starter-template-with-validation/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "location": { 6 | "type": "String", 7 | "allowedValues": ["East US", "West US", "West Europe", "East Asia", "South East Asia"], 8 | "metadata": { 9 | "description": "This is the location where the availability set will be deployed" 10 | } 11 | } 12 | }, 13 | "resources": [{ 14 | "type": "Microsoft.Compute/availabilitySets", 15 | "name": "availabilitySet1", 16 | "apiVersion": "2015-05-01-preview", 17 | "location": "[parameters('location')]", 18 | "properties": {} 19 | }] 20 | } 21 | -------------------------------------------------------------------------------- /100-starter-template-with-validation/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "location": { 3 | "value": "West US" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /100-starter-template-with-validation/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Starter template", 3 | "description": "This template creates should be used as a reference on how to pass Github Azure template repo validation", 4 | "summary": "This template serves as a validation reference", 5 | "githubUsername": "singhkay", 6 | "dateUpdated": "2015-03-24" 7 | } 8 | -------------------------------------------------------------------------------- /101-create-availability-set-3FDs/README.md: -------------------------------------------------------------------------------- 1 | # Create Availability Set 2 | 3 | Create Availability Set - 4 | 5 | 6 | 7 | This template creates an Availability Set and configures it for 3 Fault Domains. This is just a snippet you may want to include in a more complex template 3 FDs are very useful when you're building a quorum-based solution or simply to ensure high availability of your service. 8 | 9 | -------------------------------------------------------------------------------- /101-create-availability-set-3FDs/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "location": { 6 | "type": "String", 7 | "allowedValues": ["East US", "West US", "West Europe", "East Asia", "South East Asia"], 8 | "metadata": { 9 | "description": "Location to deploy to" 10 | } 11 | } 12 | }, 13 | "resources": [ 14 | { 15 | "type": "Microsoft.Compute/availabilitySets", 16 | "name": "availabilitySet1", 17 | "apiVersion": "2015-05-01-preview", 18 | "location": "[parameters('location')]", 19 | "properties": { 20 | "platformFaultDomainCount":"3" 21 | } 22 | } 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /101-create-availability-set-3FDs/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "location": { 3 | "value": "West US" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /101-create-availability-set-3FDs/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create an Availability Set with 3 Fault Domains", 3 | "description": "This template creates an Availability Set with 3 Fault Domains", 4 | "summary": "Create an Availability Set with 3 Fault Domains", 5 | "githubUsername": "kenazk", 6 | "dateUpdated": "2015-04-04" 7 | } 8 | -------------------------------------------------------------------------------- /101-create-availability-set/README.md: -------------------------------------------------------------------------------- 1 | # Create Availability Set 2 | 3 | Create Availability Set - 4 | 5 | 6 | 7 | This template deploys an Availability Set to a specified location. This is just a snippet you may want to include in a more complex template. -------------------------------------------------------------------------------- /101-create-availability-set/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "location": { 6 | "type": "String", 7 | "allowedValues": ["East US", "West US", "West Europe", "East Asia", "South East Asia"], 8 | "metadata": { 9 | "description": "Location to deploy to" 10 | } 11 | } 12 | }, 13 | "resources": [ 14 | { 15 | "type": "Microsoft.Compute/availabilitySets", 16 | "name": "availabilitySet1", 17 | "apiVersion": "2015-05-01-preview", 18 | "location": "[parameters('location')]", 19 | "properties": { 20 | } 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /101-create-availability-set/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "location": { 3 | "value": "West US" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /101-create-availability-set/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create an Availability Set", 3 | "description": "This template creates an Availability Set", 4 | "summary": "Create an Availability Set", 5 | "githubUsername": "kenazk", 6 | "dateUpdated": "2015-05-01" 7 | } 8 | -------------------------------------------------------------------------------- /101-create-internal-loadbalancer/README.md: -------------------------------------------------------------------------------- 1 | # Load Balancer with Inbound NAT Rule 2 | 3 | 4 | 5 | 6 | 7 | 8 | Built by: [kenazk](https://github.com/kenazk) 9 | 10 | This template allows you to create a Load Balancer, Public IP address for the Load balancer, Virtual Network, Network Interface in the Virtual Network & a NAT Rule in the Load Balancer that is used by the Network Interface. 11 | 12 | Below are the parameters that the template expects 13 | 14 | | Name | Description | 15 | |:--- |:---| 16 | | location | Azure region where the resource will be deployed to | 17 | | addressPrefix | Prefix for the address in CIDR format | 18 | | subnetPrefix | Prefix for the subnet in CIDR format | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /101-create-internal-loadbalancer/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "location" : { 3 | "value" : "West US" 4 | }, 5 | "addressPrefix": { 6 | "value": "10.0.0.0/16" 7 | }, 8 | "subnetPrefix": { 9 | "value": "10.0.0.0/24" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /101-create-internal-loadbalancer/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a Load Balancer with Inbound NAT Rule", 3 | "description": "This template creates a Load Balancer with Inbound NAT Rule", 4 | "summary": "This template creates a Load Balancer with Inbound NAT Rule", 5 | "githubUsername": "kenazk", 6 | "dateUpdated": "2015-04-09" 7 | } 8 | -------------------------------------------------------------------------------- /101-create-key-vault/README.md: -------------------------------------------------------------------------------- 1 | # Create Key Vault 2 | 3 | 4 | 5 | 6 | 7 | This template creates a Key Vault. For more information, go to: 8 | 9 | http://azure.microsoft.com/en-us/documentation/services/key-vault/ 10 | -------------------------------------------------------------------------------- /101-create-key-vault/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a Key Vault", 3 | "description": "This template creates a Key Vault", 4 | "summary": "This template creates a Key Vault", 5 | "githubUsername": "singhkay", 6 | "dateUpdated": "2015-03-30" 7 | } 8 | -------------------------------------------------------------------------------- /101-create-security-group/README.md: -------------------------------------------------------------------------------- 1 | # Create a Network Security Group 2 | 3 | 4 | 5 | 6 | 7 | This template creates a subnet, a Network Security Group and attaches it to the subnet in the VNET. For more information on how to configure the Network Security Group, go here: 8 | 9 | https://msdn.microsoft.com/en-us/library/azure/dn848316.aspx 10 | 11 | -------------------------------------------------------------------------------- /101-create-security-group/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "location": { 3 | "value": "West US" 4 | }, 5 | "addressPrefix": { 6 | "value": "10.0.0.0/16" 7 | }, 8 | "subnet1Prefix": { 9 | "value": "10.0.0.0/24" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /101-create-security-group/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a Network Security Group", 3 | "description": "This template creates a Network Security Group", 4 | "summary": "This template creates a Network Security Group", 5 | "githubUsername": "singhkay", 6 | "dateUpdated": "2015-04-09" 7 | } 8 | -------------------------------------------------------------------------------- /101-create-storage-account-premium/README.md: -------------------------------------------------------------------------------- 1 | # Create Premium Storage Account 2 | 3 | Create Premium Storage Account - 4 | 5 | 6 | 7 | This template creates a Premium Storage account. It provides a list of regions where Premium Storage is currently available. For more information on Premium Storage, see here: 8 | 9 | http://azure.microsoft.com/en-us/documentation/articles/storage-premium-storage-preview-portal/ 10 | 11 | -------------------------------------------------------------------------------- /101-create-storage-account-premium/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Name of the Storage Account" 9 | } 10 | }, 11 | "location": { 12 | "type": "string", 13 | "allowedValues": ["West US", "West Europe", "South East Asia"], 14 | "metadata": { 15 | "description": "Location of Premium storage account" 16 | } 17 | } 18 | }, 19 | "resources": [ 20 | { 21 | "type": "Microsoft.Storage/storageAccounts", 22 | "name": "[parameters('newStorageAccountName')]", 23 | "apiVersion": "2015-05-01-preview", 24 | "location": "[parameters('location')]", 25 | "properties": { 26 | "accountType": "Premium_LRS" 27 | } 28 | } 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /101-create-storage-account-premium/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName" : { 3 | "value" : "" 4 | }, 5 | "location": { 6 | "value": "West US" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /101-create-storage-account-premium/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a Premium Storage Account", 3 | "description": "This template creates a Premium Storage Account", 4 | "summary": "Create a Premium Storage Account", 5 | "githubUsername": "kenazk", 6 | "dateUpdated": "2015-04-27" 7 | } 8 | -------------------------------------------------------------------------------- /101-create-storage-account-standard/README.md: -------------------------------------------------------------------------------- 1 | # Create a Standard Storage Account 2 | 3 | Create a Standard Storage Account - 4 | 5 | 6 | 7 | This template creates a Standard Storage account. For more information, see here: 8 | 9 | http://azure.microsoft.com/en-us/documentation/articles/storage-create-storage-account/ 10 | -------------------------------------------------------------------------------- /101-create-storage-account-standard/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Name of the Storage Account" 9 | } 10 | }, 11 | "storageAccountType": { 12 | "type": "string", 13 | "defaultValue": "Standard_LRS", 14 | "allowedValues": [ 15 | "Standard_LRS", 16 | "Standard_GRS", 17 | "Standard_ZRS" 18 | ], 19 | "metadata": { 20 | "description": "Storage Account type" 21 | } 22 | }, 23 | "location": { 24 | "type": "string", 25 | "defaultValue" : "West US", 26 | "allowedValues": ["East US", "West US", "West Europe", "East Asia", "South East Asia"], 27 | "metadata": { 28 | "description": "Location of storage account" 29 | } 30 | } 31 | }, 32 | "resources": [ 33 | { 34 | "type": "Microsoft.Storage/storageAccounts", 35 | "name": "[parameters('newStorageAccountName')]", 36 | "apiVersion": "2015-05-01-preview", 37 | "location": "[parameters('location')]", 38 | "properties": { 39 | "accountType": "[parameters('storageAccountType')]" 40 | } 41 | } 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /101-create-storage-account-standard/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName" : { 3 | "value" : "" 4 | }, 5 | "storageAccountType": { 6 | "value": "Standard_GRS" 7 | }, 8 | "location": { 9 | "value": "West US" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /101-create-storage-account-standard/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a Standard Storage Account", 3 | "description": "This template creates a Standard Storage Account", 4 | "summary": "Create a Standard Storage Account", 5 | "githubUsername": "singhkay", 6 | "dateUpdated": "2015-03-20" 7 | } 8 | -------------------------------------------------------------------------------- /101-loadbalancer-with-nat-rule/README.md: -------------------------------------------------------------------------------- 1 | # Load Balancer with Inbound NAT Rule 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create a Load Balancer, Public IP address for the Load balancer, Virtual Network, Network Interface in the Virtual Network & a NAT Rule in the Load Balancer that is used by the Network Interface. 8 | 9 | Below are the parameters that the template expects 10 | 11 | | Name | Description | 12 | |:--- |:---| 13 | | dnsNameforLBIP | Unique DNS Name for the Load Balancer | 14 | | location | Azure region where the resource will be deployed to | 15 | | addressPrefix | Address Prefix for the Virtual Network specified in the CIDR format | 16 | | subnetPrefix | Prefix for the Subnet specified in CIDR format | 17 | | publicIPAddressType | Address Type of the Public IP Address - Dynamic or Static | 18 | -------------------------------------------------------------------------------- /101-loadbalancer-with-nat-rule/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "location" : { 3 | "value" : "West US" 4 | }, 5 | "dnsNameforLBIP": { 6 | "value": "" 7 | }, 8 | "publicIPAddressType": { 9 | "value": "Dynamic" 10 | }, 11 | "addressPrefix": { 12 | "value": "10.0.0.0/16" 13 | }, 14 | "subnetPrefix": { 15 | "value": "10.0.0.0/24" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /101-loadbalancer-with-nat-rule/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Load Balancer with Inbound NAT Rule", 3 | "description": "This template allows you to create a Load Balancer, Public IP address for the Load balancer, Virtual Network, Network Interface in the Virtual Network & a NAT Rule in the Load Balancer that is used by the Network Interface.", 4 | "summary": "Load Balancer with Inbound NAT Rule", 5 | "githubUsername": "mahthi", 6 | "dateUpdated": "2015-03-22" 7 | } 8 | -------------------------------------------------------------------------------- /101-networkinterface-with-publicip-vnet/README.md: -------------------------------------------------------------------------------- 1 | # Network Interface in a Virtual Network with Public IP Address 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create a Network Inerface in a Virtual Network referencing a Public IP Address. 8 | 9 | Below are the parameters that the template expects 10 | 11 | | Name | Description | 12 | |:--- |:---| 13 | | dnsNameforPublicIP | Unique DNS Name for the Public IP Address | 14 | | location | Azure region where the resource will be deployed to | 15 | | addressPrefix | Address Prefix for the Virtual Network specified in the CIDR format | 16 | | subnetPrefix | Prefix for the Subnet specified in CIDR format | 17 | | publicIPAddressType | Address Type of the Public IP Address - Dynamic or Static | 18 | 19 | -------------------------------------------------------------------------------- /101-networkinterface-with-publicip-vnet/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "dnsNameForPublicIP" : { 3 | "value" : "" 4 | }, 5 | "location" : { 6 | "value" : "West US" 7 | }, 8 | "publicIPAddressType": { 9 | "value": "Dynamic" 10 | }, 11 | "addressPrefix": { 12 | "value": "10.0.0.0/16" 13 | }, 14 | "subnetPrefix": { 15 | "value": "10.0.0.0/24" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /101-networkinterface-with-publicip-vnet/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Network Interface in a Virtual Network with Public IP Address", 3 | "description": "This template allows you to create a Network Inerface in a Virtual Network referencing a Public IP Address.", 4 | "summary": "Network Interface in a Virtual Network with Public IP Address", 5 | "githubUsername": "mahthi", 6 | "dateUpdated": "2015-03-22" 7 | } 8 | -------------------------------------------------------------------------------- /101-public-ip-dns-name/README.md: -------------------------------------------------------------------------------- 1 | # Create a public IP with DNS Name 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create a public IP with DNS Name during the template deployment. This is a template snippet. For a more complete network definition, see this template: 8 | 9 | https://github.com/Azure/azure-quickstart-templates/tree/master/101-loadbalancer-with-nat-rule 10 | 11 | Below are the parameters that the template expects 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 16 | | location | location where the resources will be deployed | 17 | 18 | -------------------------------------------------------------------------------- /101-public-ip-dns-name/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json", 3 | "contentVersion": "1.0.0.0", 4 | "parameters" : { 5 | "dnsNameForPublicIP" : { 6 | "type" : "string", 7 | "defaultValue": "uniquednsname", 8 | "metadata": { 9 | "description": "DNS Name for the Public IP. Must be lowercase." 10 | } 11 | }, 12 | "location": { 13 | "type": "String", 14 | "defaultValue" : "West US", 15 | "allowedValues": ["West US", "East US", "North Central US", "North Europe", "West Europe", "East Asia", "Southeast Asia"], 16 | "metadata": { 17 | "description": "Location of the Public IP." 18 | } 19 | } 20 | }, 21 | "variables": { 22 | "publicIPAddressName" : "publicIp1", 23 | "publicIPAddressType" : "Dynamic" 24 | }, 25 | "resources": [ 26 | { 27 | "apiVersion": "2015-05-01-preview", 28 | "type": "Microsoft.Network/publicIPAddresses", 29 | "name": "[variables('publicIPAddressName')]", 30 | "location": "[parameters('location')]", 31 | "properties": { 32 | "publicIPAllocationMethod": "[variables('publicIPAddressType')]", 33 | "dnsSettings": { 34 | "domainNameLabel": "[parameters('dnsNameForPublicIP')]" 35 | } 36 | } 37 | } 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /101-public-ip-dns-name/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "dnsNameForPublicIP": { 3 | "value": "" 4 | }, 5 | "location": { 6 | "value": "West US" 7 | } 8 | } -------------------------------------------------------------------------------- /101-public-ip-dns-name/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a public IP with DNS Name", 3 | "description": "This template allows you to create a public IP with DNS Name during the template deployment.", 4 | "summary": "Create public IP with DNS Name", 5 | "githubUsername": "ggalow", 6 | "dateUpdated": "2015-04-10" 7 | } 8 | -------------------------------------------------------------------------------- /101-rbac-builtinrole-resourcegroup/ReadMe.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This template assigns Owner, Reader or Contributor access to an existing resource group. Inputs to this template are following fields: 6 | 7 | Principal ID 8 | Role Definition Type 9 | 10 | 11 | **Use following powershell command to get Principal ID associated with a user using their email id. Please note, principal id maps to the id inside the directory and can point to a user, service principal, or security group. The ObjectId is the principal ID. 12 | 13 | PS C:\> Get-AzureADUser -mail 14 | 15 | DisplayName Type ObjectId 16 | ----------- ---- -------- 17 | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 18 | 19 | 20 | **Use following powershell command to learn about RoleDefinitions. Please note, the template already uses appropriate roleDefinition Id. The applicable RoleDefinition names are avialable in the parameter dropdown. 21 | 22 | PS C:\> Get-AzureRoleDefinition | fl 23 | 24 | Name : Contributor 25 | Id : /subscriptions/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c 26 | Actions : {*} 27 | NotActions : {Microsoft.Authorization/*/Write, Microsoft.Authorization/*/Delete} -------------------------------------------------------------------------------- /101-rbac-builtinrole-resourcegroup/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "principalId": { 6 | "type": "string" 7 | }, 8 | "builtInRoleType": { 9 | "type": "string", 10 | "allowedValues": [ 11 | "Owner", 12 | "Contributor", 13 | "Reader" 14 | ] 15 | } 16 | }, 17 | "variables": { 18 | "Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]", 19 | "Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", 20 | "Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", 21 | "scope": "[resourceGroup().id]" 22 | }, 23 | "resources": [{ 24 | "apiVersion": "2014-07-01-preview", 25 | "type": "Microsoft.Authorization/roleAssignments", 26 | "name": "DCE46385-7B6B-4E6B-87ED-F011289008D3", 27 | "properties": { 28 | "roleDefinitionId": "[variables(parameters('builtInRoleType'))]", 29 | "principalId": "[parameters('principalId')]", 30 | "scope": "[variables('scope')]" 31 | } 32 | }] 33 | } 34 | -------------------------------------------------------------------------------- /101-rbac-builtinrole-resourcegroup/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "principalId": { 3 | "value": "" 4 | }, 5 | "builtInRoleType": { 6 | "value": "Owner" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /101-rbac-builtinrole-resourcegroup/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Assign an RBAC role to a Resource Group", 3 | "description": "This template assigns Owner, Reader or Contributor access to an existing resource group.", 4 | "summary": "Assign an RBAC role to a Resource Group", 5 | "githubUsername": "ManaviS", 6 | "dateUpdated": "2015-03-22" 7 | } 8 | -------------------------------------------------------------------------------- /101-rbac-builtinrole-virtualmachine/ReadMe.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This template assigns Owner, Reader, Contributor, Virtual Machine Contributor access to an existing VM in a resource group. Inputs to this template are following fields: 6 | 7 | Principal ID 8 | Role Definition ID 9 | Virtual Machine Name 10 | GUID 11 | 12 | **Use following powershell command to get Principal ID associated with a user using their email id. Please note, principal id maps to the id inside the directory and can point to a user, service principal, or security group. The ObjectId is the principal ID. 13 | 14 | PS C:\> Get-AzureADUser -mail 15 | 16 | DisplayName Type ObjectId 17 | ----------- ---- -------- 18 | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 19 | 20 | 21 | **Use following powershell command to learn about RoleDefinitions. Please note, the template already uses appropriate roleDefinition Id. The applicable RoleDefinition names are avialable in the parameter dropdown. 22 | 23 | PS C:\> Get-AzureRoleDefinition | fl 24 | 25 | Name : Contributor 26 | Id : /subscriptions/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c 27 | Actions : {*} 28 | NotActions : {Microsoft.Authorization/*/Write, Microsoft.Authorization/*/Delete} -------------------------------------------------------------------------------- /101-rbac-builtinrole-virtualmachine/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "principalId" : { 3 | "value" : "" 4 | }, 5 | "builtInRoleType": { 6 | "value": "Owner" 7 | }, 8 | "virtualMachineName": { 9 | "value": "" 10 | }, 11 | "guid" : { 12 | "value" : "" 13 | } 14 | } -------------------------------------------------------------------------------- /101-rbac-builtinrole-virtualmachine/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "TemplateName": "RBAC - Grant Built In Role Access for an existing VM in a Resource Group", 3 | "Description": "This template grants applicable role based access to an existing VM in a Resource Group", 4 | "ShortDescription": "This template grants applicable role based access to an existing VM in a existing Resource Group", 5 | "GithubUsername": "ManaviS", 6 | "DateUpdated": "2015-04-10" 7 | } 8 | -------------------------------------------------------------------------------- /101-simple-linux-vm/README.md: -------------------------------------------------------------------------------- 1 | # Very simple deployment of an Linux VM 2 | 3 | 4 | 5 | 6 | 7 | Built by: [coreysa](https://github.com/coreysa) 8 | 9 | This template allows you to deploy a simple Linux VM using a few different options for the Ubuntu Linux version, using the latest patched version. This will deploy in West US on a D1 VM Size. 10 | 11 | Below are the parameters that the template expects: 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 16 | | adminUsername | Username for the Virtual Machine | 17 | | adminPassword | Password for the Virtual Machine | 18 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 19 | | ubuntuOSVersion | The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.2-LTS, 12.04.3-LTS, 12.04.4-LTS, 12.04.5-LTS, 12.10, 14.04.2-LTS, 14.10, 15.04 | 20 | -------------------------------------------------------------------------------- /101-simple-linux-vm/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "unqiueStorageAccount" 7 | }, 8 | "adminUsername": { 9 | "value": "userName" 10 | }, 11 | "adminPassword": { 12 | "value": "password" 13 | }, 14 | "vmDnsName": { 15 | "value": "uniqueDNS" 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /101-simple-linux-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Deploy a simple Linux VM in West US", 3 | "description": "This template allows you to deploy a simple Linux VM using a few different options for the Ubuntu version, using the latest patched version. This will deploy in West US on a D1 VM Size.", 4 | "summary": "This template takes a minimum amount of parameters and deploys a Linux VM, using the latest patched version.", 5 | "githubUsername": "coreysa", 6 | "dateUpdated": "2015-04-26" 7 | } 8 | -------------------------------------------------------------------------------- /101-simple-windows-vm-data-disk/README.md: -------------------------------------------------------------------------------- 1 | # Very simple deployment of an Windows VM with a single empty Data Disk 2 | 3 | 4 | 5 | 6 | 7 | Built by: [kenazk](https://github.com/kenazk) 8 | 9 | This template allows you to deploy a simple Windows VM using a few different options for the Windows version, using the latest patched version. This will deploy in West US on a D1 VM Size and attach an empty data disk to it. 10 | 11 | Below are the parameters that the template expects: 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 16 | | adminUsername | Username for the Virtual Machine | 17 | | adminPassword | Password for the Virtual Machine | 18 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 19 | | windowsOSVersion | The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter, Windows-Server-Technical-Preview | 20 | | sizeOfDiskInGB | The size of disk in GB | 21 | -------------------------------------------------------------------------------- /101-simple-windows-vm-data-disk/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "uniqueStorageAccount" 7 | }, 8 | "adminUsername": { 9 | "value": "userName" 10 | }, 11 | "adminPassword": { 12 | "value": "password" 13 | }, 14 | "vmDnsName": { 15 | "value": "uniqueDNS" 16 | }, 17 | "windowsOSVersion": { 18 | "value" : "2012-R2-Datacenter" 19 | }, 20 | "sizeOfDiskInGB" : { 21 | "value" : "20" 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /101-simple-windows-vm-data-disk/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Deploy a simple Windows VM in West US with empty data disk", 3 | "description": "This template allows you to deploy a simple Windows VM using a few different options for the Windows version, using the latest patched version. This will deploy in West US on a D1 VM Size with an empty data disk.", 4 | "summary": "This template takes a minimum amount of parameters and deploys a Windows VM, using the latest patched version.", 5 | "githubUsername": "kenazk", 6 | "dateUpdated": "2015-04-26" 7 | } 8 | -------------------------------------------------------------------------------- /101-simple-windows-vm/README.md: -------------------------------------------------------------------------------- 1 | # Very simple deployment of an Windows VM 2 | 3 | 4 | 5 | 6 | 7 | Built by: [coreysa](https://github.com/coreysa) 8 | 9 | This template allows you to deploy a simple Windows VM using a few different options for the Windows version, using the latest patched version. This will deploy in West US on a D1 VM Size. 10 | 11 | Below are the parameters that the template expects: 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 16 | | adminUsername | Username for the Virtual Machine | 17 | | adminPassword | Password for the Virtual Machine | 18 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 19 | | windowsOSVersion | The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter, Windows-Server-Technical-Preview | 20 | -------------------------------------------------------------------------------- /101-simple-windows-vm/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "uniqueStorageAccount" 7 | }, 8 | "adminUsername": { 9 | "value": "userName" 10 | }, 11 | "adminPassword": { 12 | "value": "password" 13 | }, 14 | "vmDnsName": { 15 | "value": "uniqueDNS" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /101-simple-windows-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Deploy a simple Windows VM in West US", 3 | "description": "This template allows you to deploy a simple Windows VM using a few different options for the Windows version, using the latest patched version. This will deploy in West US on a D1 VM Size.", 4 | "summary": "This template takes a minimum amount of parameters and deploys a Windows VM, using the latest patched version.", 5 | "githubUsername": "coreysa", 6 | "dateUpdated": "2015-04-26" 7 | } 8 | -------------------------------------------------------------------------------- /101-virtual-network/README.md: -------------------------------------------------------------------------------- 1 | # Virtual Network with two Subnets 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create a Virtual Network with two subnets. 8 | 9 | Below are the parameters that the template expects 10 | 11 | | Name | Description | 12 | |:--- |:---| 13 | | location | Region where the resources will be deployed | 14 | | virtualNetworkName | Name of Virtual Network | 15 | | addressPrefix | Address prefix for the Virtual Network specified in CIDR format | 16 | | subnet1Name | Name of Subnet-1 | 17 | | subnet2Name | Name of Subnet-2 | 18 | | subnet1Prefix | Prefix for the Subnet-1 specified in CIDR format | 19 | | subnet2Prefix | Prefix for the Subnet-2 specified in CIDR format | 20 | -------------------------------------------------------------------------------- /101-virtual-network/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "location": { 3 | "value": "West US" 4 | }, 5 | "virtualNetworkName": { 6 | "value": "myVNET" 7 | }, 8 | "subnet1Name": { 9 | "value": "Subnet-1" 10 | }, 11 | "subnet2Name": { 12 | "value": "Subnet-2" 13 | }, 14 | "addressPrefix": { 15 | "value": "10.0.0.0/16" 16 | }, 17 | "subnet1Prefix": { 18 | "value": "10.0.0.0/24" 19 | }, 20 | "subnet2Prefix": { 21 | "value": "10.0.1.0/24" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /101-virtual-network/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a Virtual Network with two Subnets", 3 | "description": "This template allows you to create a Virtual Network with two subnets.", 4 | "summary": "Create a Virtual Network with two Subnets", 5 | "githubUsername": "mahthi", 6 | "dateUpdated": "2015-04-04" 7 | } 8 | -------------------------------------------------------------------------------- /101-vm-customdata/README.md: -------------------------------------------------------------------------------- 1 | # Deploy a Virtual Machine with CustomData 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create a Virtual Machine with Custom Data. This template also deploys a Storage Account, Virtual Network, Public IP addresses and a Network Interface. 8 | 9 | Below are the parameters that the template expects 10 | 11 | | Name | Description | 12 | |:--- |:---| 13 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 14 | | adminUsername | Username for the Virtual Machines | 15 | | adminPassword | Password for the Virtual Machine | 16 | | customData | Specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes. In Linux VMs, The base-64 encoded string is located in the ovf-env.xml file on the ISO of the Virtual Machine. The file is copied to /var/lib/waagent/ovf-env.xml by the Azure Linux Agent. The agent will also place the base-64 encoded data in /var/lib/waagent/CustomData during provisioning. In Windows VMs, the file is saved to %SYSTEMDRIVE%\AzureData\CustomData.bin. If the file exists, it is overwritten. The security on directory is set to System:Full Control and Administrators:Full Control. | 17 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 18 | | subscriptionId | Subscription ID where the template will be deployed | 19 | | location | location where the resources will be deployed | 20 | | vmSize | Size of the Virtual Machine | 21 | | ubuntuOSVersion | The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter, Windows-Server-Technical-Preview.| 22 | 23 | 24 | -------------------------------------------------------------------------------- /101-vm-customdata/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName" : { 3 | "value":"" 4 | }, 5 | "adminUsername": { 6 | "value": "" 7 | }, 8 | "adminPassword": { 9 | "value": "" 10 | }, 11 | "customData" : { 12 | "value" : "echo customData" 13 | }, 14 | "dnsNameForPublicIP": { 15 | "value": "" 16 | }, 17 | "location": { 18 | "value": "West US" 19 | }, 20 | "vmSize": { 21 | "value": "Standard_A0" 22 | }, 23 | "ubuntuOSVersion" : { 24 | "value" : "14.10" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /101-vm-customdata/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Deploy a Virtual Machine with Custom Data", 3 | "description": "This template allows you to create a Virtual Machine with Custom Data passed down to the VM. This template also deploys a Storage Account, Virtual Network, Public IP addresses and a Network Interface.", 4 | "summary": "Deploy a Virtual Machine with Custom Data", 5 | "githubUsername": "kenazk", 6 | "dateUpdated": "2015-05-01" 7 | } 8 | -------------------------------------------------------------------------------- /101-vm-from-user-image/README.md: -------------------------------------------------------------------------------- 1 | # Create a Virtual Machine from a User Image 2 | 3 | 4 | 5 | 6 | 7 | Prerequisite - The Storage Account with the User Image VHD should already exist in the same resource group. 8 | 9 | This template allows you to create a Virtual Machines from a User image. This template also deploys a Virtual Network, Public IP addresses and a Network Interface. 10 | 11 | Below are the parameters that the template expects 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | userImageStorageAccountName | Name of the Storage Account where the User Image disk is placed. | 16 | | userImageStorageContainerName | Name of the Container Name in the Storage Account where the User Image disk is placed. | 17 | | userImageVhdName | Name of the User Image VHD file. | 18 | | osType | Specify the type of the OS of the User Image (Windows|Linux) | 19 | | adminUsername | Username for the Virtual Machines | 20 | | adminPassword | Password for the Virtual Machine | 21 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 22 | | vmSize | Size of the Virtual Machine | 23 | | 24 | -------------------------------------------------------------------------------- /101-vm-from-user-image/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "adminUsername": { 3 | "value": "username" 4 | }, 5 | "adminPassword": { 6 | "value": "password!" 7 | }, 8 | "userImageStorageAccountName": { 9 | "value" : "myStorageAccount" 10 | }, 11 | "userImageStorageContainerName" : { 12 | "value" : "myContainerName" 13 | }, 14 | "userImageVhdName" : { 15 | "value" : "sample.vhd" 16 | }, 17 | "dnsNameForPublicIP": { 18 | "value": "uniqueDNS" 19 | }, 20 | "osType" : { 21 | "value" : "linux" 22 | }, 23 | "vmSize": { 24 | "value": "Standard_D2" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /101-vm-from-user-image/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a VM from User Image", 3 | "description": "This template allows you to create a Virtual Machines from a User image. This template also deploys a Virtual Network, Public IP addresses and a Network Interface.", 4 | "summary": "Create a Virtual Machine from a User Image", 5 | "githubUsername": "mahthi", 6 | "dateUpdated": "2015-04-24" 7 | } 8 | -------------------------------------------------------------------------------- /101-vm-multiple-data-disk/README.md: -------------------------------------------------------------------------------- 1 | # Create a Virtual Machine from a Windows Image with 4 Empty Data Disks 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create a Windows Virtual Machine from a specified image during the template deployment and install the VM Diagnostics Extension. It also attaches 4 empty data disks. Note that you can specify the size of each of the empty data disks. This template also deploys a Storage Account, Virtual Network, Public IP addresses and a Network Interface. 8 | 9 | NOTE: The configuration of the VM diagnostics extension relies on a Base64 encoded string for the xmlConfig. This configures a basic set of counters, including CPU and Memory. 10 | 11 | Below are the parameters that the template expects. 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 16 | | adminUsername | Username for the Virtual Machines | 17 | | adminPassword | Password for the Virtual Machine | 18 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 19 | | sizeOfEachDataDiskInGB | Size of each data disk in GB | 20 | -------------------------------------------------------------------------------- /101-vm-multiple-data-disk/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName" : { 3 | "value":"uniqueStorageAccountName" 4 | }, 5 | "adminUsername": { 6 | "value": "username" 7 | }, 8 | "adminPassword": { 9 | "value": "password" 10 | }, 11 | "dnsNameForPublicIP": { 12 | "value": "uniqueDns" 13 | }, 14 | "vmSize": { 15 | "value": "Standard_D2" 16 | }, 17 | "sizeOfEachDataDiskInGB" : { 18 | "value":"100" 19 | } 20 | } -------------------------------------------------------------------------------- /101-vm-multiple-data-disk/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a VM from a Windows Image with 4 Empty Data Disks", 3 | "description": "This template allows you to create a Windows Virtual Machine from a specified image. It also attaches 4 empty data disks. Note that you can specify the size of the empty data disks.", 4 | "summary": "Create a VM from a Windows Image with 4 Empty Data Disks", 5 | "githubUsername": "kenazk", 6 | "dateUpdated": "2015-04-24" 7 | } 8 | -------------------------------------------------------------------------------- /201-2-vms-loadbalancer-lbrules/README.md: -------------------------------------------------------------------------------- 1 | # Create 2 Virtual Machines under a Load balancer and configures Load Balancing rules for the VMs 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create 2 Virtual Machines under a Load balancer and configure a load balancing rule on Port 80. This template also deploys a Storage Account, Virtual Network, Public IP address, Availability Set and Network Interfaces. 8 | 9 | In this template, we use the resource loops capability to create the network interfaces and virtual machines 10 | 11 | Below are the parameters that the template expects 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | storageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 16 | | adminUsername | Username for the Virtual Machines | 17 | | adminPassword | Password for the Virtual Machine | 18 | | dnsNameForLBIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 19 | | subscriptionId | Subscription ID where the template will be deployed | 20 | | vmSourceImageName | Source Image Name for the VM. Example: b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_5-LTS-amd64-server-20140927-en-us-30GB | 21 | | region | location where the resources will be deployed | 22 | | vnetName | Name of Virtual Network | 23 | | vmSize | Size of the Virtual Machine | 24 | | vmNamePrefix | NamePrefix for Virtual Machines | 25 | | publicIPAddressName | Name of Public IP Address Name | 26 | | nicNamePrefix | NamePrefix for Network Interfaces | 27 | | lbName | Name for the load balancer | 28 | | backendPort | The Back End Port that needs to be opened on the Virtual Machine Instance. For example: 3389 for RDP, 22 for SSH etc., | 29 | -------------------------------------------------------------------------------- /201-2-vms-loadbalancer-lbrules/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "location": { 3 | "value": "" 4 | }, 5 | "newStorageAccountName": { 6 | "value" : "" 7 | }, 8 | "adminUsername": { 9 | "value" : "" 10 | }, 11 | "adminPassword": { 12 | "value": "" 13 | }, 14 | "dnsNameforLBIP": { 15 | "value": "" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /201-2-vms-loadbalancer-lbrules/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "2 VMs in a Load Balancer and load balancing rules", 3 | "description": "This template allows you to create 2 Virtual Machines under a Load balancer and configure a load balancing rule on Port 80. This template also deploys a Storage Account, Virtual Network, Public IP address, Availability Set and Network Interfaces. In this template, we use the resource loops capability to create the network interfaces and virtual machines", 4 | "summary": "2 VMs in a Load Balancer and Load Balancer rules", 5 | "githubUsername": "ypitsch", 6 | "dateUpdated": "2015-04-28" 7 | } 8 | -------------------------------------------------------------------------------- /201-discover-private-ip-dynamically/README.md: -------------------------------------------------------------------------------- 1 | # Discover Private IP dynamically 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to discover a private IP for a NIC dynamically. It passes the private IP of NIC0 to VM1 using custom script extensions which writes it to a file on VM1. 8 | -------------------------------------------------------------------------------- /201-discover-private-ip-dynamically/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "" 7 | }, 8 | "location": { 9 | "value": "" 10 | }, 11 | "vmName": { 12 | "value": "" 13 | }, 14 | "vmSize": { 15 | "value": "Standard_D1" 16 | }, 17 | "adminUserName": { 18 | "value": "" 19 | }, 20 | "adminPassword": { 21 | "value": "" 22 | }, 23 | "customScriptFilePath": { 24 | "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/tree/master/master/201-discover-private-ip-dynamically/privateip.sh" 25 | }, 26 | "customScriptCommandToExecute": { 27 | "value": "sh privateip.sh " 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /201-discover-private-ip-dynamically/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Discover Private IP dynamically", 3 | "description": "This template allows you to discover a private IP for a NIC dynamically. It passes the private IP of NIC0 to VM1 using custom script extensions which writes it to a file on VM1.", 4 | "summary": "Discover Private IP dynamically", 5 | "githubUsername": "singhkay", 6 | "dateUpdated": "2015-04-28" 7 | } 8 | -------------------------------------------------------------------------------- /201-discover-private-ip-dynamically/privateip.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd /usr/local 4 | touch privateIP.txt 5 | 6 | echo $1 >> privateIP.txt 7 | -------------------------------------------------------------------------------- /201-premium-windows-vm-diagnostics-extension/README.md: -------------------------------------------------------------------------------- 1 | # Deployment of a Premium Windows VM with Diagnostics Extension 2 | 3 | 4 | 5 | 6 | 7 | Built by: [kenazk](https://github.com/kenazk) 8 | 9 | This template allows you to deploy a Premium Windows VM using a few different options for the Windows version, using the latest patched version. In addition, it will provision the Diagnostics Extension on your behlf in a new, non-Premium Storage Account. 10 | 11 | Below are the parameters that the template expects: 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | location | Location to deploy to | 16 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 17 | | vmDiagnosticsStorageAccountName | Unique DNS name for the Storage Account where the Virtual Machine's diagnostics are placed. | 18 | | adminUsername | Username for the Virtual Machine | 19 | | adminPassword | Password for the Virtual Machine | 20 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 21 | | windowsOSVersion | The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter, Windows-Server-Technical-Preview | 22 | -------------------------------------------------------------------------------- /201-premium-windows-vm-diagnostics-extension/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "location" : { 6 | "value" : "West US" 7 | }, 8 | "newStorageAccountName": { 9 | "value": "" 10 | }, 11 | "vmDiagnosticsStorageAccountName" : { 12 | "value" : "" 13 | }, 14 | "adminUsername": { 15 | "value": "" 16 | }, 17 | "adminPassword": { 18 | "value": "" 19 | }, 20 | "dnsNameForPublicIP": { 21 | "value": "" 22 | }, 23 | "windowsOSVersion" : { 24 | "value" : "2012-R2-Datacenter" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /201-premium-windows-vm-diagnostics-extension/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Deploy a Premium Windows VM", 3 | "description": "This template allows you to deploy a Premium Windows VM using a few different options for the Windows version, using the latest patched version.", 4 | "summary": "This template takes a minimum amount of parameters and deploys a Premium Windows VM, using the latest patched version.", 5 | "githubUsername": "kenazk", 6 | "dateUpdated": "2015-04-26" 7 | } 8 | -------------------------------------------------------------------------------- /201-premium-windows-vm/README.md: -------------------------------------------------------------------------------- 1 | # Deployment of a Premium Windows VM 2 | 3 | 4 | 5 | 6 | 7 | Built by: [kenazk](https://github.com/kenazk) 8 | 9 | This template allows you to deploy a Premium Windows VM using a few different options for the Windows version, using the latest patched version. 10 | 11 | Below are the parameters that the template expects: 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | location | Location to deploy to | 16 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 17 | | adminUsername | Username for the Virtual Machine | 18 | | adminPassword | Password for the Virtual Machine | 19 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 20 | | windowsOSVersion | The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter, Windows-Server-Technical-Preview | 21 | -------------------------------------------------------------------------------- /201-premium-windows-vm/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "location" : { 6 | "value" : "West US" 7 | }, 8 | "newStorageAccountName": { 9 | "value": "uniqueStorageAccount" 10 | }, 11 | "adminUsername": { 12 | "value": "userName" 13 | }, 14 | "adminPassword": { 15 | "value": "password" 16 | }, 17 | "vmDnsName": { 18 | "value": "uniqueDNS" 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /201-premium-windows-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Deploy a Premium Windows VM", 3 | "description": "This template allows you to deploy a Premium Windows VM using a few different options for the Windows version, using the latest patched version.", 4 | "summary": "This template takes a minimum amount of parameters and deploys a Premium Windows VM, using the latest patched version.", 5 | "githubUsername": "kenazk", 6 | "dateUpdated": "2015-04-26" 7 | } 8 | -------------------------------------------------------------------------------- /201-vm-from-specialized-vhd/README.md: -------------------------------------------------------------------------------- 1 | # Create a VM from a specialized VHD disk 2 | 3 | 4 | 5 | 6 | 7 | Prerequisite - Resource Group with a Storage Account with the VHD, NIC already exist. 8 | 9 | This template creates a VM from a specialized VHD. The VHD file can be located in a storage account using a tool such as Azure Storage Explorer http://azurestorageexplorer.codeplex.com/ 10 | -------------------------------------------------------------------------------- /201-vm-from-specialized-vhd/azuredeploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "location": { 6 | "type": "String", 7 | "metadata": { 8 | "description": "Location to create the VM in" 9 | } 10 | }, 11 | "osDiskVhdUri": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "Uri of the existing VHD" 15 | } 16 | }, 17 | "osType": { 18 | "type": "string", 19 | "allowedValues": [ 20 | "windows", 21 | "linux" 22 | ], 23 | "metadata": { 24 | "description": "Type of OS on the existing vhd" 25 | } 26 | }, 27 | "vmSize": { 28 | "type": "string", 29 | "defaultValue": "Standard_A2", 30 | "metadata": { 31 | "description": "Size of the VM" 32 | } 33 | }, 34 | "vmName": { 35 | "type": "string", 36 | "metadata": { 37 | "description": "Name of the VM" 38 | } 39 | }, 40 | }, 41 | "variables" :{ 42 | "nicName" : "networkInterface1" 43 | }, 44 | "resources": [{ 45 | "apiVersion": "2015-05-01-preview", 46 | "type": "Microsoft.Compute/virtualMachines", 47 | "name": "[parameters('vmName')]", 48 | "location": "[parameters('location')]", 49 | "properties": { 50 | "hardwareProfile": { 51 | "vmSize": "[parameters('vmSize')]" 52 | }, 53 | "storageProfile": { 54 | "osDisk": { 55 | "name": "[concat(parameters('vmName'),'-osDisk')]", 56 | "osType": "[parameters('osType')]", 57 | "caching": "ReadWrite", 58 | "vhd": { 59 | "uri": "[parameters('osDiskVhdUri')]" 60 | }, 61 | "createOption": "Attach" 62 | } 63 | }, 64 | "networkProfile": { 65 | "networkInterfaces": [{ 66 | "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" 67 | }] 68 | } 69 | } 70 | }] 71 | } 72 | -------------------------------------------------------------------------------- /201-vm-from-specialized-vhd/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "osDiskVhdUri": { 3 | "value" : "" 4 | }, 5 | "osType" : { 6 | "value" : "" 7 | }, 8 | "location": { 9 | "value": "" 10 | }, 11 | "vmSize": { 12 | "value": "Standard_A2" 13 | }, 14 | "vmName" : { 15 | "value" : "" 16 | }, 17 | "nicName" : { 18 | "value" : "" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /201-vm-from-specialized-vhd/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a VM from a specialized VHD disk", 3 | "description": "This template creates a VM from a specialized VHD", 4 | "summary": "This template creates a VM from a specialized VHD", 5 | "githubUsername": "singhkay", 6 | "dateUpdated": "2015-04-06" 7 | } 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Microsoft Azure 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /ansible-advancedlinux/InitStorage_RAID.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook configures a RAID device with all the available Azure disks 3 | 4 | - name: Create a RAID and Configure Storage 5 | hosts: '{{ target }}' 6 | vars: 7 | raid_device: /dev/md0 8 | system_devices: /dev/sda|/dev/sdb 9 | raid_mountpoint: /datadrive 10 | tasks: 11 | - fail: msg="Variable file_system was not defined. Specify ext4 or xfs" 12 | when: file_system is not defined 13 | 14 | # CentOS Specific tasks 15 | - name: Install CentOS packages 16 | yum: name={{ item }} state=latest 17 | with_items: 18 | - mdadm 19 | - xfsprogs 20 | when: ansible_distribution =="CentOS" 21 | 22 | # Ubuntu Specific tasks 23 | - name: Install Ubuntu packages 24 | apt: name={{ item }} state=latest 25 | with_items: 26 | - mdadm 27 | - xfsprogs 28 | when: ansible_distribution == "Ubuntu" 29 | 30 | - name: check for RAID device 31 | command: mdadm -D {{ raid_device }} 32 | register: mdadm_check 33 | failed_when: mdadm_check.rc == 0 34 | 35 | - name: List data disks and exclude system reserved devices 36 | shell: ls /dev/sd* | egrep -v "/dev/sda|/dev/sdb" |egrep -v "[0-9]$" 37 | register: data_devices 38 | 39 | - name: Abort if RAID is not needed 40 | fail: " {{ data_devices.stdout_lines | length }} devices detected.NO RAID is needed" 41 | when: "{{ data_devices.stdout_lines | length }} <= 1" 42 | 43 | - debug: msg="{{ data_devices.stdout_lines | length }} Data disks detected {{ data_devices.stdout_lines | join(" ") }}" 44 | 45 | - name: Create RAID device 46 | shell: echo yes | mdadm --create --verbose {{ raid_device }} --name=data --level=0 --raid-devices={{ data_devices.stdout_lines | length }} {{ data_devices.stdout_lines | join(" ") }} 47 | 48 | - name: Create filesystem 49 | filesystem: > 50 | fstype={{ file_system }} 51 | dev={{ raid_device }} 52 | force=no 53 | 54 | - name: Create mountpoint for RAID 55 | file: > 56 | path={{ raid_mountpoint }} 57 | state=directory 58 | 59 | - name: Mount RAID 60 | mount: > 61 | name={{ raid_mountpoint }} 62 | src={{ raid_device }} 63 | fstype={{ file_system }} 64 | state=mounted 65 | opts=defaults,noatime 66 | -------------------------------------------------------------------------------- /ansible-advancedlinux/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "location": { 6 | "value": "West US" 7 | }, 8 | "storageAccountName":{ 9 | "value":"" 10 | }, 11 | "storageAccountType": { 12 | "value": "Standard_LRS" 13 | }, 14 | "dnsNameLabel": { 15 | "value": "" 16 | }, 17 | "numberOfVMS": { 18 | "value": 3 19 | }, 20 | "serversRole":{ 21 | "value": "WebServer" 22 | }, 23 | "serversPurpose":{ 24 | "value": "DEV" 25 | }, 26 | "vmSize": { 27 | "value": "Standard_D2" 28 | }, 29 | "linuxFileSystem": { 30 | "value": "ext4" 31 | }, 32 | "adminUserName": { 33 | "value": "" 34 | }, 35 | "adminPassword": { 36 | "value": "" 37 | }, 38 | "sshKeyData" : { 39 | "value": "" 40 | }, 41 | 42 | "customScriptConfigStorageAccountName" : { 43 | "value": "" 44 | }, 45 | "customScriptConfigStorageAccountKey" : { 46 | "value": "" 47 | } 48 | 49 | 50 | } 51 | } 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /ansible-advancedlinux/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Setup Ansible to efficiently manage N Linux VMs", 3 | "description": "This advanced template deploys N Linux VMs (CentsOS or Ubuntu) and it configures Ansible so you can easily manage all the VMS from the AnsibleController VM.Additionally,it will execute an ansible Playbook that creates a RAID with all the available data disks. Don't suffer more pain configuring and managing all your VMs , just use Ansible! Ansible is a very powerful masterless configuration management system based on SSH.Do you need 1 or 10 or 100 VMs? It won't make any difference with Ansible playbooks, just apply consisten configuration to all your VMS", 4 | "summary": "Manage all your Linux VMs efficiently with Ansible.This awesome template deploys N Linux VMs and it configures Ansible.Then it executes an Ansible playbook that will RAID all the available data disks", 5 | "githubUsername": "gonzaloruiz", 6 | "dateUpdated": "2015-04-27" 7 | } 8 | -------------------------------------------------------------------------------- /anti-malware-extension-windows-vm/README.md: -------------------------------------------------------------------------------- 1 | # Create a Windows VM with Anti-Malware extension enabled 2 | 3 | 4 | 5 | 6 | 7 | Create a Windows VM with Anti-Malware extension enabled. This is a sample template that shows how to set up the Anti-Malware service with this configuration. *For your use case you might want to modify these* 8 | 9 | * Exclusions 10 | * Paths - C:\Users 11 | * Extensions - .txt 12 | * Processes - taskmgr.exe 13 | * RealtimeProtectionEnabled - true 14 | * ScheduledScanSettings 15 | * scanType - Quick 16 | * day - 7 i.e. Saturday 17 | * time - 120s (When to perform the scheduled scan, measured in minutes from midnight (0-1440). For example: 0 = 12AM, 60 = 1AM, 120 = 2AM) 18 | -------------------------------------------------------------------------------- /anti-malware-extension-windows-vm/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "" 7 | }, 8 | "location": { 9 | "value": "" 10 | }, 11 | "publicIPAddressName": { 12 | "value": "" 13 | }, 14 | "publicIPAddressType": { 15 | "value": "Dynamic" 16 | }, 17 | "vmName": { 18 | "value": "" 19 | }, 20 | "vmSize": { 21 | "value": "Standard_A2" 22 | }, 23 | "adminUserName": { 24 | "value": "" 25 | }, 26 | "adminPassword": { 27 | "value": "" 28 | }, 29 | "virtualNetworkName": { 30 | "value": "" 31 | }, 32 | "nicName": { 33 | "value": "" 34 | }, 35 | "vmExtensionName": { 36 | "value": "malware" 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /anti-malware-extension-windows-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create a Windows VM with Anti-Malware extension enabled", 3 | "description": "This template creates a Windows VM and sets up the Anti-Malware protection", 4 | "summary": "Windows VM with Anti-Malware protection", 5 | "githubUsername": "singhkay", 6 | "dateUpdated": "2015-04-07" 7 | } 8 | -------------------------------------------------------------------------------- /apache2-on-ubuntu-vm/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "" 7 | }, 8 | "location": { 9 | "value": "West US" 10 | }, 11 | "vmDnsName": { 12 | "value": "" 13 | }, 14 | "adminUsername": { 15 | "value": "" 16 | }, 17 | "adminPassword": { 18 | "value": "" 19 | }, 20 | "imagePublisher": { 21 | "value": "Canonical" 22 | }, 23 | "imageOffer": { 24 | "value": "UbuntuServer" 25 | }, 26 | "imageSKU": { 27 | "value": "14.04.2-LTS" 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /apache2-on-ubuntu-vm/install_apache.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | apt-get -y update 3 | 4 | # install Apache2 5 | apt-get -y install apache2 6 | 7 | # write some HTML 8 | echo \\My Demo App\\
\
> /var/www/html/demo.html 9 | 10 | # restart Apache 11 | apachectl restart -------------------------------------------------------------------------------- /apache2-on-ubuntu-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Apache Webserver on Ubuntu VM", 3 | "description": "This template uses the Azure Linux CustomScript extension to deploy an Apache web server. The deployment template creates an Ubuntu VM, installs Apache2 and creates a simple HTML file. Go to ../demo.html to see the deployed page.", 4 | "summary": "Deploy an Ubuntu VM with Apache webserver", 5 | "githubUsername": "gbowerman", 6 | "dateUpdated": "2015-04-24" 7 | } 8 | -------------------------------------------------------------------------------- /apache2-on-ubuntu-vm/readme.md: -------------------------------------------------------------------------------- 1 | # Apache Webserver on Ubuntu VM 2 | 3 | This template uses the Azure Linux CustomScript extension to deploy an Apache web server. The template creates an Ubuntu VM, installs Apache2 and creates a simple HTML file. Go to ../demo.html to see the deployed page. 4 | 5 | 6 | 7 | | Deploy to Azure | Author | Template Name | Description | 8 | |:-----------------|:--------------------------------| :---------------| :---------------| 9 | | | [gbowerman](https://github.com/gbowerman) | [Deploy an Apache web server on Ubuntu](https://github.com/Azure/azure-quickstart-templates/tree/master/apache2-on-ubuntu-vm) | This template creates an Ubuntu VM, installs Apache2 and creates a simple HTML file. Go to ../demo.html to see the deployed page.| 10 | -------------------------------------------------------------------------------- /chef-json-parameters-ubuntu-vm/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName": { 3 | "value": "your storage" 4 | }, 5 | "adminUserName": { 6 | "value": "admin name" 7 | }, 8 | "adminPassword": { 9 | "value": "admin password" 10 | }, 11 | "vmDnsName": { 12 | "value": "unique dns name" 13 | }, 14 | "imagePublisher": { 15 | "value": "image Publisher" 16 | }, 17 | "imageOffer": { 18 | "value": "image Offer" 19 | }, 20 | "imageSKU": { 21 | "value": "image SKU" 22 | }, 23 | "location": { 24 | "value": "VM Location" 25 | }, 26 | "vmSize": { 27 | "value": "VM Size" 28 | }, 29 | "chef_node_name": { 30 | "value": "your node name" 31 | }, 32 | "chef_server_url": { 33 | "value": "Chef Server url" 34 | }, 35 | "validation_client_name": { 36 | "value": "chef validator name" 37 | }, 38 | "runlist": { 39 | "value": "recipe[getting-started]" 40 | }, 41 | "autoUpdateClient": { 42 | "value": "false" 43 | }, 44 | "validation_key": { 45 | "value": "validation key" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /chef-json-parameters-ubuntu-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Chef with JSON parameters on Ubuntu", 3 | "description": "Deploy an Ubuntu VM With Chef with JSON parameters", 4 | "summary": "Deploy an Ubuntu VM With Chef with JSON parameters", 5 | "githubUsername": "kundanap", 6 | "dateUpdated": "2015-04-06" 7 | } 8 | -------------------------------------------------------------------------------- /chef-json-parameters-ubuntu-vm/readme.md: -------------------------------------------------------------------------------- 1 | # Deploy an Ubuntu VM With Chef. 2 | 3 | 4 | | Deploy to Azure | Author | Template Name | Description | 5 | |:-----------------|:--------------------------------| :---------------| :---------------| 6 | | | [kundanap](https://github.com/gbowerman) | [Chef Agent on Ubuntu Azure VM(https://github.com/azurermtemplates/azurermtemplates/tree/master/ubuntu-vm-with-chef) | This template provisions a Linux Ubuntu VM on Azure and bootstraps it with Chef client version 1201.12.| 7 | -------------------------------------------------------------------------------- /cloudera-on-centos/.gitattributes: -------------------------------------------------------------------------------- 1 | *.sh -crlf 2 | -------------------------------------------------------------------------------- /cloudera-on-centos/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "dnsNamePrefix": { 3 | "value": "defaultDnsNamePrefix" 4 | }, 5 | "storageAccountPrefix": { 6 | "value": "defaultStorageAccountPrefix" 7 | }, 8 | "region": { 9 | "value": "East Asia" 10 | }, 11 | "tshirtSize": { 12 | "value": "Eval" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /cloudera-on-centos/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Cloudera on CentOS VMs", 3 | "description": "This template creates a multi-server Cloudera deployment on CentOR virtual machines, and configures the Cloudera installation", 4 | "summary": "This template creates a multi-server Cloudera deployment on CentOS virtual machines", 5 | "githubUsername": "predeekc", 6 | "dateUpdated": "2015-04-18" 7 | } 8 | -------------------------------------------------------------------------------- /cloudera-on-centos/scripts/initialize-master.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Put the command line parameters into named variables 4 | IPPREFIX=$1 5 | NAMEPREFIX=$2 6 | NAMESUFFIX=$3 7 | NAMENODES=$4 8 | DATANODES=$5 9 | ADMINUSER=$6 10 | 11 | sh ./initialize-node.sh $ADMINUSER 12 | 13 | # Converts a domain like machine.domain.com to domain.com by removing the machine name 14 | NAMESUFFIX=`echo $NAMESUFFIX | sed 's/^[^.]*\.//'` 15 | 16 | #use the key from the key vault as the SSH private key 17 | openssl rsa -in /var/lib/waagent/*.prv -out /home/$ADMINUSER/.ssh/id_rsa 18 | chmod 600 /home/$ADMINUSER/.ssh/id_rsa 19 | chown $ADMINUSER /home/$ADMINUSER/.ssh/id_rsa 20 | 21 | #Generate IP Addresses for the cloudera setup 22 | NODES=() 23 | 24 | let "NAMEEND=NAMENODES-1" 25 | for i in $(seq 0 $NAMEEND) 26 | do 27 | let "IP=i+10" 28 | NODES+=("$IPPREFIX$IP:${NAMEPREFIX}-nn$i:${NAMEPREFIX}-nn$i.$NAMESUFFIX") 29 | done 30 | 31 | let "DATAEND=DATANODES-1" 32 | for i in $(seq 0 $DATAEND) 33 | do 34 | let "IP=i+20" 35 | NODES+=("$IPPREFIX$IP:${NAMEPREFIX}-dn$i:${NAMEPREFIX}-dn$i.$NAMESUFFIX") 36 | done 37 | 38 | IFS=',';NODE_IPS="${NODES[*]}";IFS=$' \t\n' 39 | 40 | sh bootstrap-cloudera.sh 'cloudera' "$IPPREFIX9:${NAMEPREFIX}-mn:${NAMEPREFIX}-mn.$NAMESUFFIX" $NODE_IPS false testuser >> /home/$ADMINUSER/bootstrap-cloudera.log 41 | -------------------------------------------------------------------------------- /cloudera-on-centos/scripts/initialize-node.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ADMINUSER=$1 4 | 5 | # Disable the need for a tty when running sudo 6 | sed -i '/Defaults[[:space:]]\+!*requiretty/s/^/#/' /etc/sudoers 7 | 8 | # Mount and format the attached disks 9 | sh ./prepareDisks.sh 10 | 11 | #use the key from the key vault as the SSH authorized key 12 | mkdir /home/$ADMINUSER/.ssh 13 | chown $ADMINUSER /home/$ADMINUSER/.ssh 14 | chmod 700 /home/$ADMINUSER/.ssh 15 | 16 | ssh-keygen -y -f /var/lib/waagent/*.prv > /home/$ADMINUSER/.ssh/authorized_keys 17 | chown $ADMINUSER /home/$ADMINUSER/.ssh/authorized_keys 18 | chmod 600 /home/$ADMINUSER/.ssh/authorized_keys 19 | 20 | #disable password authentication in ssh 21 | sed -i "s/UsePAM\s*yes/UsePAM no/" /etc/ssh/sshd_config 22 | sed -i "s/PasswordAuthentication\s*yes/PasswordAuthentication no/" /etc/ssh/sshd_config 23 | /etc/init.d/sshd restart 24 | -------------------------------------------------------------------------------- /cloudera-on-centos/server-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAuM9aF13nZ+HIhP76XtX8Oa5p5whhZ0df6Rmho/fIwe1MB7iu 3 | MD7YjbZmIMunB6vx7oou0I7oAh9O79THODOo4jBrFEtfclmG/kEjjXliE7zAEeMi 4 | 84caSEv4fcWbj5Sf591i6wcakQzqRVi6bMhuRlUFMQPT9XkcGkR9mOrLgHIKl9yR 5 | sahp1yBkhWBCcdVJB2BI4Tmb5keIbAhQsk9DSqWG2VTlH2vCC80oQDcHgJvplsWK 6 | 88LCBO1qsuS9+WJjGcl4ADgQtZeKa8Uo9obdC7sncBZHOCvTXHvmdtCOiV4ZIDwU 7 | wEpAaPsA7ppqt4/FpuAizVAdiD3Ln8HfwdFahwIDAQABAoIBABXnBR9V0rH+ETyp 8 | 11Rb+euAHy7xUFHkJJrEneKH4DQTgno7yfEP0axh3JKwcBg5qY+Csu+msBpoSXuk 9 | 9QNVJAPChz49fI9ZyuThJWyD4TrDmOPFzoOcFGJTFp0ZSUln7NeW5j1Cd0SPikgz 10 | rsxrqJ4PP3FCqeEivFDkoxn3YazUI3SyMJMFZMcQxoh2q+5oSStXliw4LnYawV4T 11 | 2jIhlNNU/W0vtp2OITJh1QvCGOFDHo0TJ63Jqhfg8P28jZ/bZaXd4beiDBB/F+Iq 12 | Y1X9IpCiRfNxRj/ZG5MYAgZ9cU5shxiYaaNhouamSsSQNvw2EQqqF7X0AYg8jnOq 13 | GTEGC1kCgYEA6x9AzZbKbJN7QIo7qGiKf0o3nDRmuEp0H2UOVK8azWIAu6c532eH 14 | OjCCo0mDcDifnO6eSbj0Mrc0nl0p9eUZbAB7mQt4x6wy5ivBVHXnvAF19NFZk3iU 15 | nA3gRJdHU2b2gqGRkdIJfKnCp4SjeMESGQ6q/yzCse/fAyOAP1/NMhsCgYEAyThq 16 | BUKE30nbNUbxstHQOVIUfG2YS/vD3t1XQIls20N0Wb3iVnYc7vBArub5k609EmkD 17 | AcifTJMiZ/uAEWbQ6I4H6R+rOQAPbXZKgz5jt4r7+XGj9ZkuOYI8q7Y4yE5pYi7r 18 | TZNGQnf0TmCJ5UJc78acW34mzMk/N8A8D55kIAUCgYAVjQTMk1C0iQQYE1OKiSKA 19 | rlXQjIEJzVE9e27H1lD3mE8G5DoKvxuG+uFOhDN2+smugbSif0Bq0Z4SEeoBruEY 20 | pCawDXwhmSgFLueGjVQTSHL+YJ38RWYhs6flwZP5EgvwR0znd8AE3C6KWj79l3zI 21 | LS8BOqIR2zGuwPdFV8ugFwKBgGDFTseky/4OqOugaNDU8sz+WnfUxS+VrwdZb4LM 22 | FJwGfshB974ZI6UNyi3TSyfoYryd4CJVd7b988gKPfcgeUu+MrO81T2ed8zu3Lrt 23 | oEs+/htiubV9q6tgpQj3o6tBepELe4JdV6bTxZyD9Q1asxNlcwDVVJecGVkYjEn+ 24 | pKx5AoGBAIHym5qlxFZFebIU94MnnJolZiwZ0MRP5qtkRll0KczAN8XuMxbANBmM 25 | ajIEVuZ/cEnsZ15bhMY7pG7n0Xgzx+IBHRc7CfEedjwndtixsduJv72hIWWnQp2v 26 | KVZnzQLnDmbuFPxBxTe/8LcmYEP29FzEFw4EysEie8A56npfTGWs 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /cloudera-on-centos/server-cert.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/github/azure-quickstart-templates/ed782d32fc6eab84c1a695b511b049098cb42307/cloudera-on-centos/server-cert.pfx -------------------------------------------------------------------------------- /cloudera-on-centos/shared-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "region": { 6 | "type": "string" 7 | }, 8 | "networkSpec": { 9 | "type": "object" 10 | }, 11 | "masterNodeASName": { 12 | "type": "string" 13 | }, 14 | "dataNodeASName": { 15 | "type": "string" 16 | } 17 | }, 18 | "variables": { 19 | }, 20 | "resources": [ 21 | { 22 | "apiVersion": "2015-05-01-preview", 23 | "type": "Microsoft.Compute/availabilitySets", 24 | "name": "[parameters('masterNodeASName')]", 25 | "location": "[parameters('region')]", 26 | "properties": { 27 | } 28 | }, 29 | { 30 | "apiVersion": "2015-05-01-preview", 31 | "type": "Microsoft.Compute/availabilitySets", 32 | "name": "[parameters('dataNodeASName')]", 33 | "location": "[parameters('region')]", 34 | "properties": { 35 | } 36 | }, 37 | { 38 | "apiVersion": "2015-05-01-preview", 39 | "type": "Microsoft.Network/virtualNetworks", 40 | "name": "[parameters('networkSpec').virtualNetworkName]", 41 | "location": "[parameters('region')]", 42 | "properties": { 43 | "addressSpace": { 44 | "addressPrefixes": [ 45 | "[parameters('networkSpec').addressPrefix]" 46 | ] 47 | }, 48 | "subnets": [ 49 | { 50 | "name": "[parameters('networkSpec').virtualNetworkSubnetName]", 51 | "properties": { 52 | "addressPrefix": "[parameters('networkSpec').subnetPrefix]" 53 | } 54 | } 55 | ] 56 | } 57 | } 58 | ] 59 | } 60 | 61 | -------------------------------------------------------------------------------- /cloudera-on-centos/upload-keys.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | [string]$resourceGroupName, 3 | [string]$region, 4 | [string]$keyVaultName, 5 | [string]$keyName, 6 | [string]$pfxFile 7 | ) 8 | 9 | # Import the key vault management scripts, will most likely become part of the Azure PowerShell tools at some point 10 | # import-module .\KeyVaultManager 11 | 12 | # Switch to ARM mode in PowerShell 13 | Switch-AzureMode -Name AzureResourceManager 14 | 15 | # Create a new Util resource group in the correct region 16 | $resourceGroup = Get-AzureResourceGroup -ResourceGroupName $resourceGroupName 2>$null 17 | if (!$resourceGroup) { 18 | Write-Host "Creating new resource group with name '$resourceGroupName'." 19 | New-AzureResourceGroup -Name $resourceGroupName -Location $region 20 | } 21 | else { 22 | Write-Host "Resource group '$resourceGroupName' already exists." 23 | } 24 | 25 | # Create a new key vault in the Util resource group 26 | $keyVault = Get-AzureKeyVault -VaultName $keyVaultName 2>$null 27 | if (!$keyVault) { 28 | Write-Host "Creating new key vault with name '$keyVaultName'." 29 | New-AzureKeyVault -VaultName $keyVaultName -ResourceGroupName $resourceGroupName -Location $region -EnabledForDeployment 30 | } 31 | else { 32 | Write-Host "Key vault '$keyVaultName' already exists." 33 | } 34 | 35 | # Format and upload the .pfx certificate to the Key Vault 36 | $fileContentBytes = get-content $pfxFile -Encoding Byte 37 | $fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes) 38 | 39 | $jsonObject = @" 40 | { 41 | "data": "$filecontentencoded", 42 | "dataType" :"pfx", 43 | "password": "" 44 | } 45 | "@ 46 | 47 | $jsonObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject) 48 | $jsonEncoded = [System.Convert]::ToBase64String($jsonObjectBytes) 49 | 50 | $secret = ConvertTo-SecureString -String $jsonEncoded -AsPlainText -Force 51 | $key = Set-AzureKeyVaultSecret -VaultName $keyVaultName -Name $keyName -SecretValue $secret 52 | $url = $key.Id 53 | 54 | Write-Host "Key has been uploaded successfully" 55 | Write-Host " - Url: $url" 56 | -------------------------------------------------------------------------------- /couchbase-ansible/InitStorage_RAID.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This playbook configures a RAID device with all the available Azure disks 3 | 4 | - name: Create a RAID and Configure Storage 5 | hosts: '{{ target }}' 6 | vars: 7 | raid_device: /dev/md0 8 | system_devices: /dev/sda|/dev/sdb 9 | raid_mountpoint: {{ data_mountpoint }} 10 | tasks: 11 | - fail: msg="Variable file_system was not defined. Specify ext4 or xfs" 12 | when: file_system is not defined 13 | 14 | # CentOS Specific tasks 15 | - name: Install CentOS packages 16 | yum: name={{ item }} state=latest 17 | with_items: 18 | - mdadm 19 | - xfsprogs 20 | when: ansible_distribution =="CentOS" 21 | 22 | # Ubuntu Specific tasks 23 | - name: Install Ubuntu packages 24 | apt: name={{ item }} state=latest 25 | with_items: 26 | - mdadm 27 | - xfsprogs 28 | when: ansible_distribution == "Ubuntu" 29 | 30 | - name: check for RAID device 31 | command: mdadm -D {{ raid_device }} 32 | register: mdadm_check 33 | failed_when: mdadm_check.rc == 0 34 | 35 | - name: List data disks and exclude system reserved devices 36 | shell: ls /dev/sd* | egrep -v "/dev/sda|/dev/sdb" |egrep -v "[0-9]$" 37 | register: data_devices 38 | 39 | - name: Abort if RAID is not needed 40 | fail: " {{ data_devices.stdout_lines | length }} devices detected.NO RAID is needed" 41 | when: "{{ data_devices.stdout_lines | length }} <= 1" 42 | 43 | - debug: msg="{{ data_devices.stdout_lines | length }} Data disks detected {{ data_devices.stdout_lines | join(" ") }}" 44 | 45 | - name: Create RAID device 46 | shell: echo yes | mdadm --create --verbose {{ raid_device }} --name=data --level=0 --raid-devices={{ data_devices.stdout_lines | length }} {{ data_devices.stdout_lines | join(" ") }} 47 | 48 | - name: Create filesystem 49 | filesystem: > 50 | fstype={{ file_system }} 51 | dev={{ raid_device }} 52 | force=no 53 | 54 | - name: Create mountpoint for RAID 55 | file: > 56 | path={{ raid_mountpoint }} 57 | state=directory 58 | 59 | - name: Mount RAID 60 | mount: > 61 | name={{ raid_mountpoint }} 62 | src={{ raid_device }} 63 | fstype={{ file_system }} 64 | state=mounted 65 | opts=defaults,noatime 66 | -------------------------------------------------------------------------------- /couchbase-ansible/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 4 | "contentVersion": "1.0.0.0", 5 | "parameters": { 6 | "location": { 7 | "value": "West US" 8 | }, 9 | "dnsNameLabel": { 10 | "value": "" 11 | }, 12 | "numberOfVMS": { 13 | "value": 3 14 | }, 15 | "serversRole":{ 16 | "value": "Couchbase" 17 | }, 18 | "serversPurpose":{ 19 | "value": "DEV" 20 | }, 21 | "storageAccountType": { 22 | "value": "Standard_LRS" 23 | }, 24 | "storageAccountName": { 25 | "value": "" 26 | }, 27 | "vmSize": { 28 | "value": "Standard_D2" 29 | }, 30 | "linuxFileSystem": { 31 | "value": "ext4" 32 | }, 33 | "adminUserName": { 34 | "value": "" 35 | }, 36 | "adminPassword": { 37 | "value": "" 38 | }, 39 | "sshKeyData" : { 40 | "value": "" 41 | }, 42 | "couchbaseAdminUser":{ 43 | "value": "" 44 | }, 45 | "couchbaseAdminPassword":{ 46 | "value": "" 47 | }, 48 | 49 | "customScriptConfigStorageAccountName" : { 50 | "value": "" 51 | }, 52 | "customScriptConfigStorageAccountKey" : { 53 | "value": "" 54 | } 55 | 56 | 57 | } 58 | } 59 | 60 | -------------------------------------------------------------------------------- /couchbase-ansible/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Multi VM Couchbase Cluster with Ansible", 3 | "description": "This advanced template deploys a Multi VM Couchbase cluster.In addition to the N number of Couchbase VMs , it will create aa A1 VM that will be used as a reverse proxy for the Couchbase admin console and as an Ansible Controller.The template uses the Ansible Playbooks provided by couchbaselabs in the GitHub repo ansible-couchbase-server to deploy Couchbase on all the VMS.", 4 | "summary": "This advanced template deploys N Linux VMs (CentsOS or Ubuntu) and it configures a Multi VM Couchbase Cluster.", 5 | "githubUsername": "gonzaloruiz", 6 | "dateUpdated": "2015-04-27" 7 | } 8 | -------------------------------------------------------------------------------- /couchbase-ansible/nginx: -------------------------------------------------------------------------------- 1 | server { 2 | 3 | 4 | root /usr/share/nginx/www; 5 | # Configure nginx as a Reverse proxy for Couchbase admin console 6 | listen {PORT} default ssl; 7 | server_name {FQDN}; 8 | ssl on; 9 | ssl_certificate /etc/nginx/ssl/nginx.crt; 10 | ssl_certificate_key /etc/nginx/ssl/nginx.key; 11 | ssl_session_cache shared:SSL:10m; 12 | ssl_session_timeout 10m; 13 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 14 | 15 | 16 | location / { 17 | index index.html; 18 | rewrite ^/$ /index.html break; 19 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 20 | proxy_set_header X-Forwarded-Proto $scheme; 21 | proxy_set_header Host $http_host; 22 | proxy_pass http://{CB_SRV1}:8091; 23 | proxy_set_header Authorization $http_authorization; 24 | proxy_pass_header Authorization; 25 | proxy_pass_header Accept; 26 | proxy_pass_header Server; 27 | 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /couchbase-on-ubuntu/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "adminUsername": { 3 | "value": "couchadmin" 4 | }, 5 | "adminPassword": { 6 | "value": "P@ssword1" 7 | }, 8 | "tshirtSize": { 9 | "value": "Small" 10 | }, 11 | "storageAccountNamePrefix": { 12 | "value": "f180cbdply91" 13 | }, 14 | "region": { 15 | "value": "East Asia" 16 | }, 17 | "virtualNetworkName": { 18 | "value": "couchVnet" 19 | }, 20 | "clusterName": { 21 | "value": "couchbasefs180" 22 | }, 23 | "jumpbox": { 24 | "value": "enabled" 25 | } 26 | } -------------------------------------------------------------------------------- /couchbase-on-ubuntu/jumpbox-resources-disabled.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "commonSettings": { 6 | "type": "object", 7 | "defaultValue": {} 8 | }, 9 | "networkSettings": { 10 | "type": "object", 11 | "defaultValue": {} 12 | }, 13 | "machineSettings": { 14 | "type": "object", 15 | "defaultValue": {} 16 | }, 17 | "storageAccountNamePrefix": { 18 | "type": "string", 19 | "defaultValue": "" 20 | } 21 | }, 22 | "variables": {}, 23 | "resources": [], 24 | "outputs": {} 25 | } -------------------------------------------------------------------------------- /couchbase-on-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Couchbase cluster on Ubuntu VMs", 3 | "description": "This template installs and configures a Couchbase 3.0.3 cluster on Ubuntu Virtual Machines.", 4 | "summary": "This template creates Provision a Couchbase cluster on Ubuntu virtual machines", 5 | "githubUsername": "ercenk", 6 | "dateUpdated": "2015-04-20" 7 | } -------------------------------------------------------------------------------- /couchbase-on-ubuntu/shared-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "commonSettings": { 6 | "type": "object", 7 | "metadata": { 8 | "Description": "Common settings object" 9 | } 10 | }, 11 | "networkSettings": { 12 | "type": "object", 13 | "metadata": { 14 | "Description": "Network settings object" 15 | } 16 | }, 17 | "storageAccountNamePrefix": { 18 | "type": "string", 19 | "metadata": { 20 | "Description": "A shared storage account for images" 21 | } 22 | } 23 | }, 24 | "variables": {}, 25 | "resources": [{ 26 | "apiVersion": "2015-05-01-preview", 27 | "type": "Microsoft.Network/virtualNetworks", 28 | "name": "[parameters('networkSettings').virtualNetworkName]", 29 | "location": "[parameters('commonSettings').region]", 30 | "properties": { 31 | "addressSpace": { 32 | "addressPrefixes": [ 33 | "[parameters('networkSettings').addressPrefix]" 34 | ] 35 | }, 36 | "subnets": [{ 37 | "name": "[parameters('networkSettings').subnet.name]", 38 | "properties": { 39 | "addressPrefix": "[parameters('networkSettings').subnet.prefix]" 40 | } 41 | }] 42 | } 43 | }, { 44 | "apiVersion": "2015-05-01-preview", 45 | "type": "Microsoft.Compute/availabilitySets", 46 | "name": "[parameters('commonSettings').availabilitySet]", 47 | "location": "[parameters('commonSettings').region]", 48 | "properties": {} 49 | }] 50 | } -------------------------------------------------------------------------------- /datastax-enterprise/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountPrefix": { 3 | "value": "" 4 | }, 5 | "dnsName": { 6 | "value": "" 7 | }, 8 | "virtualNetworkName": { 9 | "value": "datastax" 10 | }, 11 | "adminUsername": { 12 | "value": "" 13 | }, 14 | "adminPassword": { 15 | "value": "" 16 | }, 17 | "datastaxUsername": { 18 | "value":"" 19 | }, 20 | "datastaxPassword": { 21 | "value": "" 22 | }, 23 | "region": { 24 | "value": "West US" 25 | }, 26 | "opsCenterAdminPassword": { 27 | "value": "" 28 | }, 29 | "clusterVmSize": { 30 | "value": "" 31 | }, 32 | "clusterNodeCount": { 33 | "value": 3 34 | }, 35 | "clusterName": { 36 | "value": "Test Cluster" 37 | } 38 | } -------------------------------------------------------------------------------- /datastax-enterprise/dsenode.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ######################################################### 4 | # Script Name: dsenode.sh 5 | # Author: Trent Swanson - Full Scale 180 Inc github:(trentmswanson) 6 | # Version: 0.1 7 | # Last Modified By: Trent Swanson 8 | # Description: 9 | # This script prepares an Ubuntu VM image for Datastax OpsCenter Node Cluster Installation and Configure 10 | # Parameters : 11 | # Note : 12 | # This script has only been tested on Ubuntu 14.04 LTS and must be root 13 | ######################################################### 14 | 15 | bash vm-disk-utils-0.1.sh 16 | 17 | # TEMP FIX - Re-evaluate and remove when possible 18 | # This is an interim fix for hostname resolution in current VM (If it does not exist add it) 19 | grep -q "${HOSTNAME}" /etc/hosts 20 | if [ $? == 0 ]; 21 | then 22 | echo "${HOSTNAME}found in /etc/hosts" 23 | else 24 | echo "${HOSTNAME} not found in /etc/hosts" 25 | # Append it to the hsots file if not there 26 | echo "127.0.0.1 ${HOSTNAME}" >> /etc/hosts 27 | log "hostname ${HOSTNAME} added to /etchosts" 28 | fi 29 | 30 | #Install Java 31 | add-apt-repository -y ppa:webupd8team/java 32 | apt-get -y update 33 | echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections 34 | echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections 35 | apt-get -y install oracle-java7-installer 36 | 37 | #Need to see if we can find a better solution 38 | chmod 777 /mnt 39 | chmod 777 /datadisks 40 | -------------------------------------------------------------------------------- /datastax-enterprise/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Datastax Enterprise Edition on Ubuntu", 3 | "description": "This template deploys a Datastax Enterprise Edition cluster on a configurable number and size of Ubuntu virtual machines", 4 | "summary": "This template deploys a Datastax Enterprise Edition cluster on the Ubuntu", 5 | "githubUsername": "trentmswanson", 6 | "dateUpdated": "2015-04-28" 7 | } -------------------------------------------------------------------------------- /datastax-enterprise/opscenter-install-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "region": { 6 | "type": "string" 7 | }, 8 | "adminUsername": { 9 | "type": "string" 10 | }, 11 | "adminPassword": { 12 | "type": "securestring" 13 | }, 14 | "namespace": { 15 | "type": "string" 16 | }, 17 | "osSettings": { 18 | "type": "object" 19 | }, 20 | "opsCenterSettings": { 21 | "type": "object" 22 | }, 23 | "datastaxUsername": { 24 | "type": "string" 25 | }, 26 | "datastaxPassword": { 27 | "type": "securestring" 28 | } 29 | }, 30 | "variables": { 31 | }, 32 | "resources": [ 33 | { 34 | "type": "Microsoft.Compute/virtualMachines/extensions", 35 | "name": "[concat(parameters('namespace'), 'vm', '/installopscenter')]", 36 | "apiVersion": "2015-05-01-preview", 37 | "location": "[parameters('region')]", 38 | "properties": { 39 | "publisher": "Microsoft.OSTCExtensions", 40 | "type": "CustomScriptForLinux", 41 | "typeHandlerVersion": "1.2", 42 | "settings": { 43 | "fileUris": "[parameters('osSettings').scripts]", 44 | "commandToExecute": "[concat('bash opscenter.sh -n \"', parameters('opsCenterSettings').clusterName , '\" -u ', parameters('adminUsername'), ' -p ', parameters('adminPassword'), ' -k ' , parameters('opsCenterSettings').adminPassword , ' -U ', parameters('datastaxUsername'), ' -P ', parameters('datastaxPassword'), ' -ed ', parameters('opsCenterSettings').nodeList)]" 45 | } 46 | } 47 | } 48 | ], 49 | "outputs": {} 50 | } -------------------------------------------------------------------------------- /datastax-enterprise/shared-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "region": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "Location where resources will be provisioned" 9 | } 10 | }, 11 | "networkSettings": { 12 | "type": "object", 13 | "metadata": { 14 | "description": "Network settings object" 15 | } 16 | }, 17 | "storageAccountName": { 18 | "type": "string", 19 | "metadata": { 20 | "description": "A shared storage account for images" 21 | } 22 | } 23 | }, 24 | "variables": {}, 25 | "resources": [ 26 | { 27 | "type": "Microsoft.Storage/storageAccounts", 28 | "name": "[parameters('storageAccountName')]", 29 | "apiVersion": "2015-05-01-preview", 30 | "location": "[parameters('region')]", 31 | "properties": { 32 | "accountType": "Standard_LRS" 33 | } 34 | }, 35 | { 36 | "apiVersion": "2015-05-01-preview", 37 | "type": "Microsoft.Network/virtualNetworks", 38 | "name": "[parameters('networkSettings').virtualNetworkName]", 39 | "location": "[parameters('region')]", 40 | "properties": { 41 | "addressSpace": { 42 | "addressPrefixes": [ 43 | "[parameters('networkSettings').addressPrefix]" 44 | ] 45 | }, 46 | "subnets": [ 47 | { 48 | "name": "[parameters('networkSettings').subnet.dse.name]", 49 | "properties": { 50 | "addressPrefix": "[parameters('networkSettings').subnet.dse.prefix]" 51 | } 52 | } 53 | ] 54 | } 55 | } 56 | ] 57 | } 58 | -------------------------------------------------------------------------------- /datastax-on-ubuntu/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountPrefix": { 3 | "value": "" 4 | }, 5 | "dnsName": { 6 | "value": "" 7 | }, 8 | "virtualNetworkName": { 9 | "value": "datastax" 10 | }, 11 | "adminUsername": { 12 | "value": "trent" 13 | }, 14 | "adminPassword": { 15 | "value": "" 16 | }, 17 | "region": { 18 | "value": "East Asia" 19 | }, 20 | "opsCenterAdminPassword": { 21 | "value": "" 22 | }, 23 | "clusterVmSize": { 24 | "value": "Standard_D3" 25 | }, 26 | "clusterNodeCount": { 27 | "value": 3 28 | }, 29 | "clusterName": { 30 | "value": "" 31 | } 32 | } -------------------------------------------------------------------------------- /datastax-on-ubuntu/dsenode.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ######################################################### 4 | # Script Name: dsenode.sh 5 | # Author: Trent Swanson - Full Scale 180 Inc github:(trentmswanson) 6 | # Version: 0.1 7 | # Last Modified By: Trent Swanson 8 | # Description: 9 | # This script prepares an Ubuntu VM image for Datastax OpsCenter Node Cluster Installation and Configure 10 | # Parameters : 11 | # Note : 12 | # This script has only been tested on Ubuntu 14.04 LTS and must be root 13 | ######################################################### 14 | 15 | bash vm-disk-utils-0.1.sh 16 | 17 | # TEMP FIX - Re-evaluate and remove when possible 18 | # This is an interim fix for hostname resolution in current VM (If it does not exist add it) 19 | grep -q "${HOSTNAME}" /etc/hosts 20 | if [ $? == 0 ]; 21 | then 22 | echo "${HOSTNAME}found in /etc/hosts" 23 | else 24 | echo "${HOSTNAME} not found in /etc/hosts" 25 | # Append it to the hsots file if not there 26 | echo "127.0.0.1 ${HOSTNAME}" >> /etc/hosts 27 | log "hostname ${HOSTNAME} added to /etchosts" 28 | fi 29 | 30 | #Install Java 31 | add-apt-repository -y ppa:webupd8team/java 32 | apt-get -y update 33 | echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections 34 | echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections 35 | apt-get -y install oracle-java7-installer 36 | 37 | #Need to see if we can find a better solution 38 | chmod 777 /mnt 39 | chmod 777 /datadisks 40 | -------------------------------------------------------------------------------- /datastax-on-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Datastax on Ubuntu", 3 | "description": "This template deploys a Datastax cluster on a configurable number and size of Ubuntu virtual machines", 4 | "summary": "This template deploys a Datastax cluster on the Ubuntu", 5 | "githubUsername": "trentmswanson", 6 | "dateUpdated": "2015-04-19" 7 | } -------------------------------------------------------------------------------- /datastax-on-ubuntu/opscenter-install-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "region": { 6 | "type": "string" 7 | }, 8 | "adminUsername": { 9 | "type": "string" 10 | }, 11 | "adminPassword": { 12 | "type": "securestring" 13 | }, 14 | "namespace": { 15 | "type": "string" 16 | }, 17 | "osSettings": { 18 | "type": "object" 19 | }, 20 | "opsCenterSettings": { 21 | "type": "object" 22 | } 23 | }, 24 | "variables": { 25 | }, 26 | "resources": [ 27 | { 28 | "type": "Microsoft.Compute/virtualMachines/extensions", 29 | "name": "[concat(parameters('namespace'), 'vm', '/installopscenter')]", 30 | "apiVersion": "2015-05-01-preview", 31 | "location": "[parameters('region')]", 32 | "properties": { 33 | "publisher": "Microsoft.OSTCExtensions", 34 | "type": "CustomScriptForLinux", 35 | "typeHandlerVersion": "1.2", 36 | "settings": { 37 | "fileUris": "[parameters('osSettings').scripts]", 38 | "commandToExecute": "[concat('bash opscenter.sh -n \"', parameters('opsCenterSettings').clusterName , '\" -u ', parameters('adminUsername'), ' -p ', parameters('adminPassword'), ' -k ' , parameters('opsCenterSettings').adminPassword , ' -ed ', parameters('opsCenterSettings').nodeList)]" 39 | } 40 | } 41 | } 42 | ], 43 | "outputs": {} 44 | } -------------------------------------------------------------------------------- /datastax-on-ubuntu/shared-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "region": { 6 | "type": "string", 7 | "metadata": { 8 | "Description": "Location where resources will be provisioned" 9 | } 10 | }, 11 | "networkSettings": { 12 | "type": "object", 13 | "metadata": { 14 | "Description": "Network settings object" 15 | } 16 | }, 17 | "storageAccountName": { 18 | "type": "string", 19 | "metadata": { 20 | "Description": "A shared storage account for images" 21 | } 22 | } 23 | }, 24 | "variables": {}, 25 | "resources": [ 26 | { 27 | "type": "Microsoft.Storage/storageAccounts", 28 | "name": "[parameters('storageAccountName')]", 29 | "apiVersion": "2015-05-01-preview", 30 | "location": "[parameters('region')]", 31 | "properties": { 32 | "accountType": "Standard_LRS" 33 | } 34 | }, 35 | { 36 | "apiVersion": "2015-05-01-preview", 37 | "type": "Microsoft.Network/virtualNetworks", 38 | "name": "[parameters('networkSettings').virtualNetworkName]", 39 | "location": "[parameters('region')]", 40 | "properties": { 41 | "addressSpace": { 42 | "addressPrefixes": [ 43 | "[parameters('networkSettings').addressPrefix]" 44 | ] 45 | }, 46 | "subnets": [ 47 | { 48 | "name": "[parameters('networkSettings').subnet.dse.name]", 49 | "properties": { 50 | "addressPrefix": "[parameters('networkSettings').subnet.dse.prefix]" 51 | } 52 | } 53 | ] 54 | } 55 | } 56 | ] 57 | } 58 | -------------------------------------------------------------------------------- /diskraid-ubuntu-vm/README.md: -------------------------------------------------------------------------------- 1 | # Create Ubuntu vm data disk raid0 2 | 3 | 4 | 5 | 6 | 7 | This is a simple template that deploys an Ubuntu Virtual Machine with multiple disks attached, and uses mdadm script to create a raid0 volume with all attached data disks. 8 | 9 | This template also deploys a Storage Account, Virtual Network, Public IP addresses, and a Network Interface. 10 | 11 | Below are the parameters that the template expects 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | storageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed | 16 | | adminUsername | Username for the Virtual Machines | 17 | | adminPassword | Password for the Virtual Machine | 18 | | dnsName | Unique DNS Name for the Public IP (dnsName.westus.cloudapp.azure.com) | 19 | | region | region where the resources will be deployed | 20 | | virtualNetworkName | Name of Virtual Network | 21 | | vmSize | Size of the Virtual Machine Instance | 22 | | dataDiskSize | The size of each data disk attached in Gb (default 200GB) | 23 | -------------------------------------------------------------------------------- /diskraid-ubuntu-vm/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "dnsName": { 3 | "value":"" 4 | }, 5 | "storageAccountName" : { 6 | "value":"uniqueAccountName" 7 | }, 8 | "adminUsername": { 9 | "value": "azureuser" 10 | }, 11 | "adminPassword": { 12 | "value": "" 13 | }, 14 | "region": { 15 | "value": "West US" 16 | }, 17 | "virtualNetworkName": { 18 | "value": "" 19 | }, 20 | "vmSize": { 21 | "value": "Standard_A1" 22 | } 23 | } -------------------------------------------------------------------------------- /diskraid-ubuntu-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create Ubuntu vm data disk raid0", 3 | "description": "This template creates a virtual machine with multiple disks attached. A script partitions and formats the disks in raid0 array.", 4 | "summary": "Create Ubuntu vm with multiple data disks formatted as raid0 disk array", 5 | "githubUsername": "trentmswanson", 6 | "dateUpdated": "2015-04-08" 7 | } 8 | -------------------------------------------------------------------------------- /django-app/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "uniquestorageaccountname" 7 | }, 8 | "location": { 9 | "value": "West US" 10 | }, 11 | "adminUsername": { 12 | "value": "username" 13 | }, 14 | "adminPassword": { 15 | "value": "strongpassword" 16 | }, 17 | "vmDnsName": { 18 | "value": "uniquednsname" 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /django-app/install_django.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export DEBIAN_FRONTEND=noninteractive 3 | apt-get -y update 4 | 5 | # install Python 6 | apt-get -y install python-setuptools 7 | 8 | # install DJango 9 | easy_install django 10 | 11 | # install Apache 12 | apt-get -y install apache2 libapache2-mod-wsgi 13 | 14 | # create a django app 15 | cd /var/www 16 | django-admin startproject helloworld 17 | 18 | # Create a new file named views.py in the /var/www/helloworld/helloworld directory. This will contain the view 19 | # that renders the "hello world" page 20 | echo 'from django.http import HttpResponse 21 | def home(request): 22 | html = "Hello World!" 23 | return HttpResponse(html)' | tee /var/www/helloworld/helloworld/views.py 24 | # Update urls.py 25 | echo "from django.conf.urls import patterns, url 26 | urlpatterns = patterns('', 27 | url(r'^$', 'helloworld.views.home', name='home'), 28 | )" | tee /var/www/helloworld/helloworld/urls.py 29 | 30 | # Setup Apache 31 | echo " 32 | ServerName $1 33 | 34 | WSGIScriptAlias / /var/www/helloworld/helloworld/wsgi.py 35 | WSGIPythonPath /var/www/helloworld" | tee /etc/apache2/sites-available/helloworld.conf 36 | 37 | #enable site 38 | a2ensite helloworld 39 | 40 | #restart apache 41 | service apache2 reload 42 | -------------------------------------------------------------------------------- /django-app/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Deploy a Django app", 3 | "description": "This template uses the Azure Linux CustomScript extension to deploy an application. This example creates an Ubuntu VM, does a silent install of Python, Django and Apache, then creates a simple Django app", 4 | "summary": "Deploy a Django app", 5 | "githubUsername": "madhana", 6 | "dateUpdated": "2015-04-10" 7 | } 8 | -------------------------------------------------------------------------------- /django-app/readme.md: -------------------------------------------------------------------------------- 1 | # Deploy a Django app on Ubuntu. 2 | 3 | 4 | | Deploy to Azure | Author | Template Name | Description | 5 | |:-----------------|:--------------------------------| :---------------| :---------------| 6 | | | [madhana](https://github.com/madhana) | [Deploy a Python Django app on Ubuntu](https://github.com/madhana/azure-quickstart-templates/tree/master/django-app) | This template uses the Azure Linux CustomScript extension to deploy a Django application by creating an Ubuntu VM, doing a silent install of Python and Apache, then creating a simple Django application.| 7 | 8 | This template uses the Azure Linux CustomScript extension to deploy an application. This example creates an Ubuntu VM, does a silent install of Python, Apache, then creates a simple Django app.It is essentially the template for the tutorial that can be found here -> http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-python-django-web-app-linux/ 9 | 10 | Once the template is deployed, just grab the FQDN of the VM and open it in a browser and you'll see the hello world app running. 11 | -------------------------------------------------------------------------------- /docker-simple-on-ubuntu/README.md: -------------------------------------------------------------------------------- 1 | # Simple deployment of an Ubuntu VM with Docker 2 | 3 | 4 | 5 | 6 | 7 | Built by: [coreysa](https://github.com/coreysa) 8 | 9 | This template allows you to deploy an Ubuntu VM with Docker (using the Docker extension) and three Docker containers pulled directly from DockerHub and deployed using Docker Compose. 10 | 11 | Below are the parameters that the template expects 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 16 | | location | The location where the Virtual Machine will be deployed | 17 | | adminUsername | Username for the Virtual Machine | 18 | | adminPassword | Password for the Virtual Machine | 19 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 20 | | ubuntuOSVersion | The Ubuntu version for deploying the Docker containers. This will pick a fully patched image of this given Ubuntu version. Allowed values: 14.04.2-LTS, 14.04-DAILY, 15.04, 14.10. | 21 | | dockerHubImage1 | The name of the first DockerHub image to pass through to Docker compose on the VM. | 22 | | dockerHubImage2 | The second DockerHub image. | 23 | | dockerHubImage3 | The third DockerHub image. | -------------------------------------------------------------------------------- /docker-simple-on-ubuntu/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "unqiueStorageAccount" 7 | }, 8 | "adminUsername": { 9 | "value": "userName"" 10 | }, 11 | "adminPassword": { 12 | "value": "password" 13 | }, 14 | "vmDnsName": { 15 | "value": "uniqueDNS" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /docker-simple-on-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Deploy an Ubuntu VM with Docker and three containers", 3 | "description": "This template allows you to deploy an Ubuntu VM with Docker (using the Docker extension) and three Docker containers pulled directly from DockerHub and deployed using Docker Compose.", 4 | "summary": "This template takes a few parameters and deploys an Ubuntu VM with three Docker containers", 5 | "githubUsername": "coreysa", 6 | "dateUpdated": "2015-04-26" 7 | } 8 | -------------------------------------------------------------------------------- /docker-swarm-cluster/README.md: -------------------------------------------------------------------------------- 1 | # Deploy Docker swarm cluster on a Virtual Machines 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create a Docker swarm cluster on a VM on Azure. 8 | 9 | Below are the parameters that the template expects 10 | 11 | | Name | Description | 12 | |:--- |:---| 13 | | storageAccountNamePrefix | Storage Account Name Prefix where the Virtual Machine's disks will be placed. | 14 | | adminUsername | Username for the Virtual Machines | 15 | | adminPassword | Password for the Virtual Machines | 16 | | subscriptionId | Subscription ID where the template will be deployed | 17 | | scaleNumberPerRegion | Number of Virtual Machine instances to create per Region | 18 | | virtualNetworkNamePrefix | Virtual Network Name Prefix | 19 | | vmNamePrefix | Virtual Machine Name Prefix | 20 | | publicIPAddressNamePrefix | Public IP address Name Prefix | 21 | | nicNamePrefix | Network Interface Name Prefix | 22 | -------------------------------------------------------------------------------- /docker-swarm-cluster/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName" : { 3 | "value":"" 4 | }, 5 | "adminUsername": { 6 | "value": "" 7 | }, 8 | "adminPassword": { 9 | "value": "" 10 | }, 11 | "dnsNameForPublicIP": { 12 | "value": "" 13 | }, 14 | "vmSourceImageName" : { 15 | "value" : "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_2_LTS-amd64-server-20150309-en-us-30GB" 16 | }, 17 | "location": { 18 | "value": "West US" 19 | }, 20 | "virtualNetworkName": { 21 | "value": "myVNET" 22 | }, 23 | "vmSize": { 24 | "value": "Standard_D1" 25 | }, 26 | "vmName" : { 27 | "value" : "myVM" 28 | }, 29 | "publicIPAddressName" : { 30 | "value" : "myPublicIP" 31 | }, 32 | "nicName" : { 33 | "value" : "myNic" 34 | }, 35 | "extensionName": { 36 | "value": "DockerExtension" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /docker-swarm-cluster/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Docker Swarm", 3 | "description": "This template creates a Docker swarm cluster", 4 | "summary": "This template sets up a Docker Swarm cluster in a VM. The user can get the cluster id by running: docker run --rm swarm create", 5 | "githubUsername": "kmouss", 6 | "dateUpdated": "2015-04-20" 7 | } 8 | -------------------------------------------------------------------------------- /drone-ubuntu-vm/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "armdronetest01" 7 | }, 8 | "location": { 9 | "value": "East US" 10 | }, 11 | "adminUsername": { 12 | "value": "myuser" 13 | }, 14 | "adminPassword": { 15 | "value": "" 16 | }, 17 | "vmDnsName": { 18 | "value": "" 19 | }, 20 | "githubClientKey": { 21 | "value": "" 22 | }, 23 | "githubSecret": { 24 | "value": "" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /drone-ubuntu-vm/install_drone.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set local variables 4 | GITHUB_CLIENT=$1 5 | GITHUB_SECRET=$2 6 | 7 | # retrieve latest package updates 8 | apt-get update 9 | 10 | # install dependencies 11 | apt-get install -y linux-image-extra-$(uname -r) libsqlite3-dev 12 | 13 | # configure Docker for AUFS 14 | sed -i 's/^#DOCKER_OPTS.*/DOCKER_OPTS="-s aufs"/' /etc/default/docker 15 | 16 | # retrieve and install Drone package 17 | wget downloads.drone.io/master/drone.deb 18 | dpkg --install drone.deb 19 | rm -f drone.deb 20 | 21 | # modify drone.toml 22 | echo -e "\n\n[github]" >> /etc/drone/drone.toml 23 | echo "client=\"$GITHUB_CLIENT\"" >> /etc/drone/drone.toml 24 | echo "secret=\"$GITHUB_SECRET\"" >> /etc/drone/drone.toml 25 | echo "open=false" >> /etc/drone/drone.toml 26 | echo "\n\n[worker]" >> /etc/drone/drone.toml 27 | echo "nodes=[" >> /etc/drone/drone.toml 28 | echo " \"unix:///var/run/docker.sock\"," >> /etc/drone/drone.toml 29 | echo " \"unix:///var/run/docker.sock\"" >> /etc/drone/drone.toml 30 | echo "]" >> /etc/drone/drone.toml 31 | 32 | # restart 33 | reboot 34 | -------------------------------------------------------------------------------- /drone-ubuntu-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Drone on Ubuntu VM", 3 | "description": "This template provisions an instance of Ubuntu 14.04 LTS with the Docker Extension and Drone CI package.", 4 | "summary": "Ubuntu VM template with Drone CI", 5 | "githubUsername": "anweiss", 6 | "dateUpdated": "2015-04-27" 7 | } 8 | -------------------------------------------------------------------------------- /drone-ubuntu-vm/readme.md: -------------------------------------------------------------------------------- 1 | # Deploy an Ubuntu VM with Drone CI. 2 | 3 | 4 | | Deploy to Azure | Author | Template Name | Description | 5 | |:-----------------|:--------------------------------| :---------------| :---------------| 6 | | | [anweiss](https://github.com/anweiss) | [Drone CI on Ubuntu Azure VM](https://github.com/azure/azure-quickstart-templates/tree/master/drone-ubuntu-vm) | This template provisions an Ubuntu Linux VM on Azure and bootstraps it with the latest release of the Drone continuous integration toolset.

**Parameters**
`newStorageAccountName`
Name of new Storage Account that will hold VM OS disk
`location`
Azure Region to which template and its resources will be deployed
`adminUsername`
Username assigned to new local user on VM
`adminPassword`
Password assigned to new local user on VM
`vmDnsName`
Hostname and Azure DNS name that the VM will be assigned
`dockerPort`
Azure VM Endpoint that will be made available and used by the Docker VM Extension
`githubClientKey`
GitHub application client key required by the Drone CI components for synchronizing repositories
`githubSecret`
GitHub application client secret required by the Drone CI components for synchronizing repositories
| 7 | -------------------------------------------------------------------------------- /dsc-extension-iis-server-windows-vm/ContosoWebsite.ps1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/github/azure-quickstart-templates/ed782d32fc6eab84c1a695b511b049098cb42307/dsc-extension-iis-server-windows-vm/ContosoWebsite.ps1.zip -------------------------------------------------------------------------------- /dsc-extension-iis-server-windows-vm/README.md: -------------------------------------------------------------------------------- 1 | # VM-DSC-Extension-IIS-Server 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create a VM with IIS Server and Management console setup. This is done using the DSC extension. 8 | 9 | Below are the parameters that the template expects 10 | 11 | | Name | Description | 12 | |:--- |:---| 13 | | location | Location where to deploy the resource | 14 | | newStorageAccountName | Name of the storage account to create | 15 | | storageAccountType | Type of the storage account
    **Allowed Values**
  • Standard_LRS **(default)**
  • Standard_GRS
| 16 | | publicIPAddressName | Name of the public IP address to create | 17 | | publicIPAddressType | Type of Public IP Address | 18 | | vmStorageAccountContainerName | Name of storage account container for the VM
  • vhds **(default)**
| 19 | | vmName | Name for the VM | 20 | | vmSize | Size of the VM
    **Allowed Values**
  • Standard_A0 **(default)**
  • Standard_A1
  • Standard_A2
  • Standard_A3
  • Standard_A4
| 21 | | vmSourceImageName | Name of image to use for the VM
  • a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201412.01-en.us-127GB.vhd **(default)**
| 22 | | adminUsername | Admin username for the VM | 23 | | adminPassword | Admin password for the VM | 24 | | virtualNetworkName | Name of the Virtual Network | 25 | | addressPrefix | Virtual Network Address Prefix
  • 10.0.0.0/16 **(default)**
| 26 | | subnet1Name | Name of Subnet 1
  • Subnet-1 **(default)**
| 27 | | subnet2Name | Name of Subnet 2
  • Subnet-2 **(default)**
| 28 | | subnet1Prefix | Address prefix for Subnet 1
  • 10.0.0.0/24 **(default)**
| 29 | | subnet2Prefix | Address prefix for Subnet 2
  • 10.0.0.0/24 **(default)**
| 30 | | dnsName | DNS for the VM | 31 | | subscriptionId | Your Azure Subscription Id | 32 | | nicName | Name for the Network Interface | 33 | | vmExtensionName | Name for the Extension | 34 | | modulesUrl | Url for the DSC configuration module
  • Example: https://xyz.blob.core.windows.net/abc/ContosoWebsite.ps1.zip
| 35 | | sasToken | SAS Token for the DSC configuration module | 36 | | configurationFunction | Name of the function to run in the DSC configuration
  • Example: ContosoWebsite.ps1/ContosoWebsite
| 37 | -------------------------------------------------------------------------------- /dsc-extension-iis-server-windows-vm/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "kaystore5c" 7 | }, 8 | "location": { 9 | "value": "westus" 10 | }, 11 | "dnsName": { 12 | "value": "kaydns5" 13 | }, 14 | "publicIPAddressName": { 15 | "value": "kayip5" 16 | }, 17 | "publicIPAddressType": { 18 | "value": "Dynamic" 19 | }, 20 | "vmName": { 21 | "value": "kayvn" 22 | }, 23 | "vmSize": { 24 | "value": "Standard_A2" 25 | }, 26 | "adminUserName": { 27 | "value": "kay" 28 | }, 29 | "adminPassword": { 30 | "value": "abc_123!" 31 | }, 32 | "virtualNetworkName": { 33 | "value": "kaynet5" 34 | }, 35 | "nicName": { 36 | "value": "kaynic5" 37 | }, 38 | "vmExtensionName": { 39 | "value": "dscExtension" 40 | }, 41 | "modulesUrl": { 42 | "value": "https://github.com/azurermtemplates/azurermtemplates/raw/master/dsc-extension-iis-server-windows-vm/ContosoWebsite.ps1.zip" 43 | }, 44 | "configurationFunction": { 45 | "value": "ContosoWebsite.ps1\\ContosoWebsite" 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /dsc-extension-iis-server-windows-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "IIS Server using DSC extension on a Windows VM", 3 | "description": "This template creates a Windows VM and sets up an IIS server using the DSC extension", 4 | "summary": "This template creates a VM with IIS server using DSC extension", 5 | "githubUsername": "singhkay", 6 | "dateUpdated": "2015-04-25" 7 | } 8 | -------------------------------------------------------------------------------- /elasticsearch/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "dnsNameforLBIP": { 3 | "value":"trentes50" 4 | }, 5 | "storageAccountPrefix" : { 6 | "value":"" 7 | }, 8 | "adminUsername": { 9 | "value": "trent" 10 | }, 11 | "adminPassword": { 12 | "value": "" 13 | }, 14 | "dataNodeScaleUnits": { 15 | "value": 1 16 | }, 17 | "dataNodesPerUnit": { 18 | "value": 2 19 | }, 20 | "region": { 21 | "value": "East Asia" 22 | }, 23 | "virtualNetworkName": { 24 | "value": "elasticsearch" 25 | }, 26 | "esClusterName": { 27 | "value": "elasticsearch-fullscale" 28 | }, 29 | "loadBalancerType": { 30 | "value": "external" 31 | }, 32 | "vmSizeDataNodes": { 33 | "value": "Standard_D1" 34 | }, 35 | "vmClientNodeCount": { 36 | "value":3 37 | } 38 | } -------------------------------------------------------------------------------- /elasticsearch/empty-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "region": { 6 | "type": "string", 7 | "defaultValue": "" 8 | }, 9 | "subnet": { 10 | "type": "object", 11 | "defaultValue": {} 12 | }, 13 | "storageAccountName": { 14 | "type": "string", 15 | "defaultValue": "" 16 | }, 17 | "adminUsername": { 18 | "type": "string", 19 | "defaultValue": "" 20 | }, 21 | "adminPassword": { 22 | "type": "securestring", 23 | "defaultValue": "" 24 | }, 25 | "osSettings": { 26 | "type": "object", 27 | "defaultValue": {} 28 | }, 29 | "vmSize": { 30 | "type": "string", 31 | "defaultValue": "" 32 | }, 33 | "esSettings": { 34 | "type": "object", 35 | "defaultValue": {} 36 | }, 37 | "vmCount": { 38 | "type": "int", 39 | "defaultValue": 0 40 | }, 41 | "lbBackendPools": { 42 | "type": "object", 43 | "defaultValue": {} 44 | } 45 | }, 46 | "variables": {}, 47 | "resources": [], 48 | "outputs": {} 49 | } -------------------------------------------------------------------------------- /elasticsearch/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Install Elasticsearch cluster on Virtual Machines", 3 | "description": "This template deploys an Elasticsearch cluster on Virtual Machines and uses template linking to create data node scale untis. The template provisions 3 dedicated master and client nodes in separate availability sets and storage accounts. Data node scale unit count and nodes in a scale unit can be configured as parameters. A load balancer is configured with a rule to route traffic on port 9200 to the client nodes, and also includes a single SSH nat management rule for a single node. Multiple data disks are attached and data is striped across them as an approach to improve disk throughput.", 4 | "summary": "Install Elasticsearch cluster on Virtual Machines with data node storage scale units", 5 | "githubUsername": "trentmswanson", 6 | "dateUpdated": "2015-05-26" 7 | } 8 | -------------------------------------------------------------------------------- /hortonworks-on-centos/.gitattributes: -------------------------------------------------------------------------------- 1 | *.sh -crlf 2 | -------------------------------------------------------------------------------- /hortonworks-on-centos/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "dnsNamePrefix": { 3 | "value": "defaultDnsNamePrefix" 4 | }, 5 | "storageAccountPrefix": { 6 | "value": "defaultStorageAccountPrefix" 7 | }, 8 | "region": { 9 | "value": "East Asia" 10 | }, 11 | "tshirtSize": { 12 | "value": "Eval" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /hortonworks-on-centos/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Hortonworks on CentOS VMs", 3 | "description": "This template creates a multi-server Hortonworks deployment on CentOR virtual machines, and configures the Hortonworks installation", 4 | "summary": "This template creates a multi-server Hortonworks deployment on CentOS virtual machines", 5 | "githubUsername": "predeekc", 6 | "dateUpdated": "2015-04-24" 7 | } 8 | -------------------------------------------------------------------------------- /hortonworks-on-centos/scripts/initialize-master.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IPPREFIX=$1 3 | NAMEPREFIX=$2 4 | NAMESUFFIX=$3 5 | NAMENODES=$4 6 | DATANODES=$5 7 | ADMINUSER=$6 8 | 9 | # Converts a domain like machine.domain.com to domain.com by removing the machine name 10 | NAMESUFFIX=`echo $NAMESUFFIX | sed 's/^[^.]*\.//'` 11 | 12 | #disable the need for a tty when running sudo 13 | sed -i '/Defaults[[:space:]]\+!*requiretty/s/^/#/' /etc/sudoers 14 | 15 | #use the key from the key vault as the SSH private key 16 | openssl rsa -in /var/lib/waagent/*.prv -out /home/$ADMINUSER/.ssh/id_rsa 17 | chmod 600 /home/$ADMINUSER/.ssh/id_rsa 18 | chown $ADMINUSER /home/$ADMINUSER/.ssh/id_rsa 19 | 20 | # Disable SELinux 21 | /usr/sbin/setenforce 0 22 | sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config 23 | 24 | # Do not start iptables on boot 25 | chkconfig iptables off 26 | 27 | # Start ntpd on boot 28 | chkconfig ntpd on 29 | 30 | # Install ambari 31 | sudo yum install -y epel-release 32 | sudo wget http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.0.0/ambari.repo 33 | sudo cp ambari.repo /etc/yum.repos.d 34 | sudo rm -f ambari.repo 35 | sudo yum install -y ambari-server 36 | sudo yum install -y ambari-agent 37 | sudo ambari-server setup -s 38 | 39 | # Format and mount the disks 40 | let i=0 || true 41 | for disk in $(sfdisk -l | grep "Disk /dev/sd[^ab]" | sed -r "s/Disk (\/dev\/sd.):.*$/\1/"); 42 | do 43 | sh ./mountDisk.sh $disk $i 0$null 17 | if (!$resourceGroup) { 18 | Write-Host "Creating new resource group with name '$resourceGroupName'." 19 | New-AzureResourceGroup -Name $resourceGroupName -Location $region 20 | } 21 | else { 22 | Write-Host "Resource group '$resourceGroupName' already exists." 23 | } 24 | 25 | # Create a new key vault in the Util resource group 26 | $keyVault = Get-AzureKeyVault -VaultName $keyVaultName 2>$null 27 | if (!$keyVault) { 28 | Write-Host "Creating new key vault with name '$keyVaultName'." 29 | New-AzureKeyVault -VaultName $keyVaultName -ResourceGroupName $resourceGroupName -Location $region -EnabledForDeployment 30 | } 31 | else { 32 | Write-Host "Key vault '$keyVaultName' already exists." 33 | } 34 | 35 | # Format and upload the .pfx certificate to the Key Vault 36 | $fileContentBytes = get-content $pfxFile -Encoding Byte 37 | $fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes) 38 | 39 | $jsonObject = @" 40 | { 41 | "data": "$filecontentencoded", 42 | "dataType" :"pfx", 43 | "password": "" 44 | } 45 | "@ 46 | 47 | $jsonObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject) 48 | $jsonEncoded = [System.Convert]::ToBase64String($jsonObjectBytes) 49 | 50 | $secret = ConvertTo-SecureString -String $jsonEncoded -AsPlainText -Force 51 | $key = Set-AzureKeyVaultSecret -VaultName $keyVaultName -Name $keyName -SecretValue $secret 52 | $url = $key.Id 53 | 54 | Write-Host "Key has been uploaded successfully" 55 | Write-Host " - Url: $url" 56 | -------------------------------------------------------------------------------- /jenkins-on-ubuntu/README.md: -------------------------------------------------------------------------------- 1 | # Install a Jenkins Master and Slave node on Ubuntu Virtual Machines using Custom Script Linux Extension 2 | 3 | 4 | 5 | 6 | 7 | This template deploys a Jenkins master node on an Ubuntu virtual machines and multiple Jenkin slave nodes on two additional VM. This template also provisions a storage account, virtual network, availability sets, public IP addresses and network interfaces required by the installation. 8 | 9 | The example expects the following parameters: 10 | 11 | | Name | Description | 12 | |:--- |:---| 13 | | storageAccountPrefix | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed (multiple storage accounts are created with this template using this value as a prefix for the storage account name) | 14 | | adminUsername | Admin user name for the Virtual Machines | 15 | | adminPassword | Admin password for the Virtual Machine | 16 | | region | Region name where the corresponding Azure artifacts will be created | 17 | | virtualNetworkName | Name of the Virtual Network that is created and that resources will be deployed in to | 18 | | dnsName | The domain name portion of the publicly accessible Jenkin master {domainName}.{region}.cloudapp.azure.com (e.g. mydomainname.westus.cloudapp.azure.com)| 19 | | masterVmSize | The size of the Jenkins Master node VM. Default = Standard_D3 20 | | slaveVmSize | The size of the Jenkins slave node VM(s). Default = Standard_D3 21 | | slaveNodes | The number of Jenkins Slave nodes. Default = 1 22 | 23 | Topology 24 | -------- 25 | 26 | This template deploys a Jenkins master and a configurable number of Jenkins slave nodes. 27 | The master node is exposed on a public IP address that you can access through a browser on port :8080 as well as SSH on the standard port. 28 | 29 | ##Known Issues and Limitations 30 | - The template does not currently configure SSL on master or slave nodes. 31 | - The template uses username/password for provisioning and would ideally use an SSH key 32 | - The deployment scripts are not currently idempotent and this template should only be used for provisioning a new master and slave. 33 | -------------------------------------------------------------------------------- /jenkins-on-ubuntu/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountPrefix": { 3 | "value": "jenkstore19" 4 | }, 5 | "virtualNetworkName": { 6 | "value": "vnet1" 7 | }, 8 | "adminUsername": { 9 | "value": "azureuser" 10 | }, 11 | "adminPassword": { 12 | "value": "P@ssword1" 13 | }, 14 | "region": { 15 | "value": "West US" 16 | }, 17 | "masterVmSize": { 18 | "value": "Standard_D3" 19 | }, 20 | "slaveNodes": { 21 | "value": 3 22 | }, 23 | "slaveVmSize": { 24 | "value": "Standard_D3" 25 | } 26 | } -------------------------------------------------------------------------------- /jenkins-on-ubuntu/jenkAddNode: -------------------------------------------------------------------------------- 1 | import jenkins.model.* 2 | import hudson.model.* 3 | import hudson.slaves.* 4 | 5 | 6 | if (args.length > 0) { 7 | int cnt = args[0].toInteger() 8 | 9 | for (int i = 0; i < cnt; i++) { 10 | String name = "Slave" + Integer.toString(i) 11 | 12 | Jenkins.instance.addNode(new DumbSlave(name,"Description","/var/jenkens","1",Node.Mode.NORMAL,"label",new JNLPLauncher(),new RetentionStrategy.Always(),new LinkedList())) 13 | } 14 | } -------------------------------------------------------------------------------- /jenkins-on-ubuntu/jenkMstrInstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ######################################################### 4 | # Script Name: jenkMstrInstall.sh 5 | # Author: Dennis Angeline - Full Scale 180 Inc 6 | # Version: 0.1 7 | # Last Modified By: Dennis Angeline 8 | # Description: 9 | # This script install Jenkins master on an Ubuntu VM image 10 | # and configures the master to have $NODECNT dumb slave nodes 11 | # Parameters : 12 | # NODECNT - An int value of slave nodes to add to the master config 13 | # Note : 14 | # This script has only been tested on Ubuntu 14.04 LTS 15 | ######################################################### 16 | 17 | if [ "$1" == "" ]; then 18 | NODECNT=1 19 | else 20 | NODECNT=$1 21 | fi 22 | 23 | grep -q "${HOSTNAME}" /etc/hosts 24 | 25 | if [ $? == 0 ]; 26 | then 27 | echo "${HOSTNAME} found in /etc/hosts" 28 | else 29 | echo "${HOSTNAME} not found in /etc/hosts" 30 | sudo echo "127.0.0.1 ${HOSTNAME}" >> /etc/hosts 31 | echo "hostname ${HOSTNAME} added to /etc/hosts" 32 | fi 33 | 34 | #### Install Java 35 | echo "Installing openjdk-7" 36 | apt-get -y update 37 | apt-get -y install openjdk-7-jdk 38 | apt-get -y update 39 | 40 | #### Install Jenkins 41 | echo "Installing Jenkins master" 42 | wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - 43 | sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list' 44 | apt-get update 45 | apt-get -y install jenkins 46 | 47 | ### wait for Jenkins to start 48 | ### TODO add logic to wait for 200 response 49 | echo "Waiting for Jenkins master to start..." 50 | sleep 60 51 | 52 | #### Run groovy script to configure master with $NODECNT dumb slave node(s) 53 | echo "Configuring Jenkins master with $NODECNT dumb slave node(s)" 54 | sudo java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://localhost:8080 groovy jenkAddNode $NODECNT 55 | -------------------------------------------------------------------------------- /jenkins-on-ubuntu/jenkSlaveInstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ######################################################### 4 | # Script Name: jenkSlaveInstall.sh 5 | # Author: Dennis Angeline - Full Scale 180 Inc 6 | # Version: 0.1 7 | # Last Modified By: Dennis Angeline 8 | # Description: 9 | # This script install Jenkins slave on an Ubuntu VM image 10 | # Parameters : 11 | # MASTERNODE: The ip address of the master node 12 | # SLAVENODE: The name of this slave node 13 | # Note : 14 | # This script has only been tested on Ubuntu 14.04 LTS and must be root 15 | ####################################################### 16 | 17 | MASTERNODE=$1 18 | SLAVENODE=$2 19 | 20 | # Install Java 21 | echo "Installing openjdk-7" 22 | apt-get -y update 23 | apt-get -y install openjdk-7-jdk 24 | 25 | # Download slave.jar from master 26 | echo "Downloading slave.jar from $MASTERNODE" 27 | wget http://$MASTERNODE:8080/jnlpJars/slave.jar -O ~/slave.jar 28 | chmod 777 ~/slave.jar 29 | 30 | # Launch slave agent 31 | echo "Executing slave.jar with http://$MASTERNODE:8080/computer/$SLAVENODE/slave-agent.jnlp" 32 | nohup java -jar ~/slave.jar -jnlpUrl http://$MASTERNODE:8080/computer/$SLAVENODE/slave-agent.jnlp & 33 | 34 | -------------------------------------------------------------------------------- /jenkins-on-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Jenkins on Ubuntu", 3 | "description": "This template deploys a Jenkins master and a configurable number of Jenkins Slave nodes on Ubuntu virtual machines", 4 | "summary": "This template deploys a Jenkins on the Ubuntu", 5 | "githubUsername": "dennisan", 6 | "dateUpdated": "2015-04-23" 7 | } -------------------------------------------------------------------------------- /jenkins-on-ubuntu/shared-resources-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountName": { 3 | "value": "dastore3" 4 | }, 5 | "region": { 6 | "value": "West US" 7 | }, 8 | "networkSettings": { 9 | "value": { 10 | "virtualNetworkName": "vnet1", 11 | "addressPrefix": "10.0.0.0/16", 12 | "subnet": { 13 | "dse": { 14 | "name": "dse", 15 | "prefix": "10.0.0.0/24", 16 | "vnet": "vnet1" 17 | } 18 | } 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /jenkins-on-ubuntu/shared-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "region": { 6 | "type": "string", 7 | "metadata": { 8 | "Description": "Location where resources will be provisioned" 9 | } 10 | }, 11 | "networkSettings": { 12 | "type": "object", 13 | "metadata": { 14 | "Description": "Network settings object" 15 | } 16 | }, 17 | "storageAccountName": { 18 | "type": "string", 19 | "metadata": { 20 | "Description": "A shared storage account for images" 21 | } 22 | } 23 | }, 24 | "variables": {}, 25 | "resources": [ 26 | { 27 | "apiVersion": "2014-12-01-preview", 28 | "type": "Microsoft.Storage/storageAccounts", 29 | "name": "[parameters('storageAccountName')]", 30 | "location": "[parameters('region')]", 31 | "properties": { 32 | "accountType": "Standard_LRS" 33 | } 34 | }, 35 | { 36 | "apiVersion": "2014-12-01-preview", 37 | "type": "Microsoft.Network/virtualNetworks", 38 | "name": "[parameters('networkSettings').virtualNetworkName]", 39 | "location": "[parameters('region')]", 40 | "properties": { 41 | "addressSpace": { 42 | "addressPrefixes": [ 43 | "[parameters('networkSettings').addressPrefix]" 44 | ] 45 | }, 46 | "subnets": [ 47 | { 48 | "name": "[parameters('networkSettings').subnet.dse.name]", 49 | "properties": { 50 | "addressPrefix": "[parameters('networkSettings').subnet.dse.prefix]" 51 | } 52 | } 53 | ] 54 | } 55 | } 56 | ] 57 | } -------------------------------------------------------------------------------- /kafka-on-ubuntu/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountName": { 3 | "value": "armuiquekafkastr4" 4 | }, 5 | "adminUsername": { 6 | "value": "adminuser" 7 | }, 8 | "adminPassword": { 9 | "value": "azure@1234" 10 | }, 11 | "region": { 12 | "value": "West US" 13 | }, 14 | "virtualNetworkName": { 15 | "value": "kafkaClustVnet" 16 | }, 17 | "subnetName": { 18 | "value": "Subnet1" 19 | }, 20 | "addressPrefix": { 21 | "value": "10.0.0.0/16" 22 | }, 23 | "subnetPrefix": { 24 | "value": "10.0.0.0/24" 25 | }, 26 | "kafkaVersion": { 27 | "value": "3.0.0" 28 | }, 29 | "kafkaClusterName": { 30 | "value": "kafka-arm-cluster" 31 | }, 32 | "kafkaNodeIPAddressPrefix": { 33 | "value": "10.0.0.1" 34 | }, 35 | "kafkaZooNodeIPAddressPrefix": { 36 | "value": "10.0.0.4" 37 | }, 38 | "jumpbox": { 39 | "value": "enabled" 40 | }, 41 | "tshirtSize": { 42 | "value": "S" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /kafka-on-ubuntu/jumpbox-resources-disabled.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | }, 6 | "variables": { 7 | }, 8 | "resources": [ 9 | ], 10 | "outputs": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /kafka-on-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Provisions a Kafka Cluster on Ubuntu Virtual Machines", 3 | "description": "This template creates a Kafka cluster on Ubuntu virtual machine image, enables persistence (by default) and applies all well-known optimizations and best practices", 4 | "summary": "This template creates a Kafka Cluster on Ubuntu virtual machines", 5 | "githubUsername": "CognosysTech", 6 | "dateUpdated": "2015-04-06" 7 | } 8 | -------------------------------------------------------------------------------- /kafka-ubuntu-multidisks/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountNamePrefix": { 3 | "value": "cgnarmstrkafkav5" 4 | }, 5 | "adminUsername": { 6 | "value": "adminuser" 7 | }, 8 | "region": { 9 | "value": "West US" 10 | }, 11 | "adminPassword": { 12 | "value": "azure@1234" 13 | }, 14 | "domainName": { 15 | "value": "kafkacgnarmv5" 16 | }, 17 | "jumpbox": { 18 | "value": "Enabled" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /kafka-ubuntu-multidisks/empty-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "adminPassword": { 6 | "type": "securestring", 7 | "defaultValue": "" 8 | }, 9 | "commonSettings": { 10 | "type": "object", 11 | "defaultValue": {} 12 | }, 13 | "networkSettings": { 14 | "type": "object", 15 | "defaultValue": {} 16 | }, 17 | "machineSettings": { 18 | "type": "object", 19 | "defaultValue": {} 20 | }, 21 | "osSettings": { 22 | "type": "object", 23 | "defaultValue": {} 24 | }, 25 | "appSettings": { 26 | "type": "object", 27 | "defaultValue": {} 28 | }, 29 | "appPassword": { 30 | "type": "securestring", 31 | "defaultValue": "" 32 | }, 33 | "subnet": { 34 | "type": "object", 35 | "defaultValue": {} 36 | }, 37 | "dnsName": { 38 | "type": "string", 39 | "defaultValue":"" 40 | } 41 | }, 42 | "variables": {}, 43 | "resources": [], 44 | "outputs": {} 45 | } -------------------------------------------------------------------------------- /kafka-ubuntu-multidisks/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Kafka on Ubuntu VMs", 3 | "description": "This template creates Kafka streaming replication from one zookeeper to one or more brokers each configured with multiple striped data disks. The database servers are deployed into a private subnet with an optional externally accessible jumpbox.", 4 | "summary": "Kafka stream-replication with multiple broker servers and a publicly accessible jumpbox VM", 5 | "githubUsername": "CognosysTech", 6 | "dateUpdated": "2015-04-26" 7 | } 8 | -------------------------------------------------------------------------------- /lamp-app/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "" 7 | }, 8 | "location": { 9 | "value": "West US" 10 | }, 11 | "adminUsername": { 12 | "value": "" 13 | }, 14 | "adminPassword": { 15 | "value": "" 16 | }, 17 | "mySqlPassword": { 18 | "value": "" 19 | }, 20 | "vmDnsName": { 21 | "value": "" 22 | }, 23 | "imagePublisher": { 24 | "value": "Canonical" 25 | }, 26 | "imageOffer": { 27 | "value": "UbuntuServer" 28 | }, 29 | "imageSKU": { 30 | "value": "14.04.2-LTS" 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /lamp-app/install_lamp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | apt-get -y update 3 | 4 | # set up a silent install of MySQL 5 | dbpass=$1 6 | 7 | export DEBIAN_FRONTEND=noninteractive 8 | echo mysql-server-5.6 mysql-server/root_password password $dbpass | debconf-set-selections 9 | echo mysql-server-5.6 mysql-server/root_password_again password $dbpass | debconf-set-selections 10 | 11 | # install the LAMP stack 12 | apt-get -y install apache2 mysql-server php5 php5-mysql 13 | 14 | # write some PHP 15 | echo \\My Demo App\\
\
> /var/www/html/phpinfo.php 16 | echo \<\?php phpinfo\(\)\; \?\> >> /var/www/html/phpinfo.php 17 | 18 | # restart Apache 19 | apachectl restart -------------------------------------------------------------------------------- /lamp-app/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Deploy a LAMP app", 3 | "description": "This template uses the Azure Linux CustomScript extension to deploy an application. It creates an Ubuntu VM, does a silent install of MySQL, Apache and PHP, then creates a simple PHP script.", 4 | "summary": "Deploy a LAMP app", 5 | "githubUsername": "gbowerman", 6 | "dateUpdated": "2015-04-25" 7 | } 8 | -------------------------------------------------------------------------------- /lamp-app/readme.md: -------------------------------------------------------------------------------- 1 | # Deploy a LAMP app on Ubuntu. 2 | 3 | This template uses the Azure Linux CustomScript extension to deploy a LAMP application on Ubuntu. It creates an Ubuntu VM, does a silent install of MySQL, Apache and PHP, then creates a simple PHP script. 4 | 5 | | Deploy to Azure | Author | Template Name | Description | 6 | |:-----------------|:--------------------------------| :---------------| :---------------| 7 | | | [gbowerman](https://github.com/gbowerman) | [Deploy a LAMP app on Ubuntu](https://github.com/gbowerman/azure-quickstart-templates/tree/master/lamp-app) | This template uses the Azure Linux CustomScript extension to deploy a LAMP application on Ubuntu. Go to /phpinfo.php to see the deployed page.| 8 | -------------------------------------------------------------------------------- /memcached-multi-vm-ubuntu/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "adminUsername": { 6 | "value": "azureuser" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /memcached-multi-vm-ubuntu/cache_test.php: -------------------------------------------------------------------------------- 1 | "); 6 | 7 | $mem = new Memcached(); 8 | 9 | for ($i=0; $iaddServer($serversArray[$i], 11211); 12 | } 13 | 14 | $result = $mem->get("key1"); 15 | 16 | $date = date("Y-m-d G:i"); 17 | print("Today's date ".$date."
"); 18 | 19 | if ($result) { 20 | echo $result; 21 | } else { 22 | echo "No matching key found. It will be added now."; 23 | $mem->set("key1","This is the data in the key added on ".$date) or die("Could not save"); 24 | } 25 | 26 | print("
memcached stats
"); 27 | print_r($mem->getStats()); 28 | print("
"); 29 | 30 | ?> -------------------------------------------------------------------------------- /memcached-multi-vm-ubuntu/install_apache.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get passed in parameters 4 | numberOfMemcachedInstances=$1 5 | subnetMemcachedPrefix=$2 6 | 7 | # Create simple python script to iterate over the IPs skipping first 3 8 | echo "c=$numberOfMemcachedInstances" > p.py 9 | echo "ip='$subnetMemcachedPrefix'" >> p.py 10 | echo "octets=ip.split('/')[0].split('.')" >> p.py 11 | echo "octets[3]=str(int(octets[3])+3)" >> p.py 12 | echo "s=[]" >> p.py 13 | echo "for i in range(0,c):" >> p.py 14 | echo " octets[3]=str(int(octets[3])+1)" >> p.py 15 | echo " s.append('.'.join(octets))" >> p.py 16 | echo "print(','.join(s))" >> p.py 17 | 18 | # Get comma delimited list of servers 19 | servers=$(python ./p.py) 20 | 21 | # Get today's date into YYYYMMDD format 22 | now=$(date +"%Y%m%d") 23 | 24 | echo "Installing apache $now, numberOfMemcachedInstances=$numberOfMemcachedInstances, subnetMemcachedPrefix=$subnetMemcachedPrefix, servers=$servers" >> /var/log/apache_install.log 25 | 26 | # Re-synchronize the package index files from their sources. An update should always be performed before an upgrade. 27 | apt-get -y update 28 | 29 | # Install apache, php5, and php5-memcached extension 30 | apt-get -y install apache2 php5 php5-memcached 31 | 32 | # Delete Apache index page 33 | rm /var/www/html/index.html 34 | 35 | # Download cache_test.php page 36 | wget -O /var/www/html/index.php https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/memcached-multi-vm-ubuntu/cache_test.php 37 | 38 | # Replace the placeholder with the string of comma delimited memcached server IPs that was passed to this script as a parameter 39 | sed -i "s/{COMMA_DELIMITED_SERVERS_LIST}/$servers/g" /var/www/html/index.php 40 | 41 | # restart Apache 42 | apachectl restart -------------------------------------------------------------------------------- /memcached-multi-vm-ubuntu/install_memcached.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get passed in parameters 4 | memcachedIndex=$1 5 | privateIP=$2 6 | apacheIP=$3 7 | 8 | # Get today's date into YYYYMMDD format 9 | now=$(date +"%Y%m%d") 10 | 11 | # Re-synchronize the package index files from their sources. An update should always be performed before an upgrade. 12 | apt-get -y update 13 | 14 | # Memcached is a C program and depends on a recent version of GCC and a recent version of libevent. 15 | apt-get -y install memcached 16 | 17 | echo "Memcached installed on $now index $memcachedIndex, private ip $privateIP, and apache ip $apacheIP" >> /var/log/memcached_install.log 18 | 19 | # By default memcached listens on TCP and UDP ports 11211. You must not expose memcached directly to the internet. 20 | 21 | # Change memcached.conf to listen on all IPs not just 127.0.0.1 and use 512MB of RAM instead of default 64MB 22 | sed -i "s/-l 127.0.0.1/#-l 127.0.0.1/g" /etc/memcached.conf 23 | sed -i "s/^-m 64$/-m 512/g" /etc/memcached.conf 24 | 25 | # Restart memcached service with the new configuration 26 | service memcached restart 27 | 28 | # Inspect running configuration by issuing a "stats settings" command to the proper ports 29 | echo "stats settings" | nc localhost 11211 > /var/log/memcached_stats_$now.log -------------------------------------------------------------------------------- /memcached-multi-vm-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Memcached service cluster using multiple Ubuntu VMs", 3 | "description": "This template creates one or more memcached services on Ubuntu 14.04 VMs in a private subnet. It also creates one publicly accessible Apache VM with a PHP test page to confirm that memcached is installed and accessible.", 4 | "summary": "Multiple memcached servers in a private subnet and a publicly accessible Apache test page.", 5 | "githubUsername": "arsenvlad", 6 | "dateUpdated": "2015-04-25" 7 | } 8 | -------------------------------------------------------------------------------- /mongodb-high-availability/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "adminUsername": { 3 | "value": "MongoAdmin" 4 | }, 5 | "adminPassword": { 6 | "value": "" 7 | }, 8 | "storageAccountName": { 9 | "value": "" 10 | }, 11 | "region": { 12 | "value": "West US" 13 | }, 14 | "virtualNetworkName": { 15 | "value": "mongodbVnet" 16 | }, 17 | "subnetName": { 18 | "value": "mongodbSubnet" 19 | }, 20 | "addressPrefix": { 21 | "value": "10.0.0.0/16" 22 | }, 23 | "subnetPrefix": { 24 | "value": "10.0.0.0/24" 25 | }, 26 | "nodeAddressPrefix": { 27 | "value": "10.0.0.1" 28 | }, 29 | "jumpbox": { 30 | "value": "Disabled" 31 | }, 32 | "tshirtSize": { 33 | "value": "XSmall" 34 | }, 35 | "osFamily": { 36 | "value": "Ubuntu" 37 | }, 38 | "mongodbVersion": { 39 | "value": "3.0.2" 40 | }, 41 | "replicaSetName": { 42 | "value": "rs0" 43 | }, 44 | "replicaSetKey": { 45 | "value": "" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /mongodb-high-availability/empty-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "commonSettings": { 6 | "type": "object", 7 | "metadata": { 8 | "Description": "Common settings object" 9 | } 10 | }, 11 | "storageSettings": { 12 | "type": "object", 13 | "metadata": { 14 | "Description": "Storage settings object" 15 | } 16 | }, 17 | "networkSettings": { 18 | "type": "object", 19 | "metadata": { 20 | "Description": "Network settings object" 21 | } 22 | }, 23 | "machineSettings": { 24 | "type": "object", 25 | "metadata": { 26 | "Description": "Machine settings object" 27 | } 28 | } 29 | }, 30 | "variables": { 31 | }, 32 | "resources": [ 33 | ], 34 | "outputs": { 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /mongodb-high-availability/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "MongoDB on Ubuntu VMs", 3 | "description": "This template creates a multi-server MongoDB deployment on Ubuntu virtual machines, and configures the MongoDB installation for high availability", 4 | "summary": "This template creates a multi-server MongoDB deployment on Ubuntu virtual machines", 5 | "githubUsername": "TheAzureGuy", 6 | "dateUpdated": "2015-04-18" 7 | } -------------------------------------------------------------------------------- /mongodb-on-centos/README.md: -------------------------------------------------------------------------------- 1 | # Install Mongo DB on a CentOS Virtual Machine using Custom Script Linux Extension 2 | 3 | 4 | 5 | 6 | 7 | This template deploys Mongo DB on a CentOS Virtual Machine. This template also deploys a Storage Account, Virtual Network, Public IP addresses and a Network Interface. 8 | 9 | Note: Cent OS disables Username/Password on Azure SKUs by default. This template will be updated with SSH Keys for the VMs soon. 10 | 11 | Below are the parameters that the template expects 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 16 | | adminUsername | Username for the Virtual Machines | 17 | | adminPassword | Password for the Virtual Machine | 18 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 19 | | subscriptionId | Subscription ID where the template will be deployed | 20 | | vmSourceImageName | Source Image Name for the VM. Example: b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_5-LTS-amd64-server-20140927-en-us-30GB | 21 | | location | location where the resources will be deployed | 22 | | virtualNetworkName | Name of Virtual Network | 23 | | vmSize | Size of the Virtual Machine | 24 | | vmName | Name of Virtual Machine | 25 | | publicIPAddressName | Name of Public IP Address Name | 26 | | nicName | Name of Network Interface | 27 | -------------------------------------------------------------------------------- /mongodb-on-centos/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName" : { 3 | "value":"uniqueStorageAccountName" 4 | }, 5 | "adminUsername": { 6 | "value": "" 7 | }, 8 | "adminPassword": { 9 | "value": "" 10 | }, 11 | "dnsNameForPublicIP": { 12 | "value": "uniqueDnsNameForPublicIP" 13 | }, 14 | "location": { 15 | "value": "West US" 16 | }, 17 | "virtualNetworkName": { 18 | "value": "myVNET" 19 | }, 20 | "vmSize": { 21 | "value": "Standard_A0" 22 | }, 23 | "vmName" : { 24 | "value" : "myVM" 25 | }, 26 | "publicIPAddressName" : { 27 | "value" : "myPublicIP" 28 | }, 29 | "nicName" : { 30 | "value" : "myNic" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /mongodb-on-centos/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Install Mongo DB on a CentOS VM using Custom Script Linux Extension", 3 | "description": "This template deploys Mongo DB on a CentOS Virtual Machine. This template also deploys a Storage Account, Virtual Network, Public IP addresses and a Network Interface.", 4 | "summary": "Install Mongo DB on a CentOS VM using Custom Script Linux Extension", 5 | "githubUsername": "mahthi", 6 | "dateUpdated": "2015-03-22" 7 | } 8 | -------------------------------------------------------------------------------- /mongodb-on-centos/mongo-install-centos.sh: -------------------------------------------------------------------------------- 1 | #Modify Sudoers file to not require tty for shell script execution on CentOS 2 | # sudo sed -i '/Defaults[[:space:]]\+requiretty/s/^/#/' /etc/sudoers 3 | 4 | # Enable write access to the mongodb.repo and configure it for installation 5 | 6 | #sudo chmod 777 /etc/yum.repos.d/mongodb.repo 7 | touch /etc/yum.repos.d/mongodb.repo 8 | echo "[mongodb]" >> /etc/yum.repos.d/mongodb.repo 9 | echo "name=MongoDB Repository" >> /etc/yum.repos.d/mongodb.repo 10 | echo "baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64" >> /etc/yum.repos.d/mongodb.repo 11 | echo "gpgcheck=0" >> /etc/yum.repos.d/mongodb.repo 12 | echo "enabled=1" >> /etc/yum.repos.d/mongodb.repo 13 | 14 | # Install updates 15 | yum -y update 16 | 17 | #Install Mongo DB 18 | yum install -y mongo-10gen mongo-10gen-server 19 | -------------------------------------------------------------------------------- /mongodb-on-ubuntu/README.md: -------------------------------------------------------------------------------- 1 | # Install Mongo DB on a Ubuntu Virtual Machine using Custom Script Linux Extension 2 | 3 | 4 | 5 | 6 | 7 | This template deploys Mongo DB on a Ubuntu Virtual Machine. This template also deploys a Storage Account, Virtual Network, Public IP addresses and a Network Interface. 8 | 9 | Below are the parameters that the template expects 10 | 11 | | Name | Description | 12 | |:--- |:---| 13 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 14 | | adminUsername | Username for the Virtual Machines | 15 | | adminPassword | Password for the Virtual Machine | 16 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 17 | | subscriptionId | Subscription ID where the template will be deployed | 18 | | vmSourceImageName | Source Image Name for the VM. Example: b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_5-LTS-amd64-server-20140927-en-us-30GB | 19 | | location | location where the resources will be deployed | 20 | | virtualNetworkName | Name of Virtual Network | 21 | | vmSize | Size of the Virtual Machine | 22 | | vmName | Name of Virtual Machine | 23 | | publicIPAddressName | Name of Public IP Address Name | 24 | | nicName | Name of Network Interface | 25 | -------------------------------------------------------------------------------- /mongodb-on-ubuntu/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName" : { 3 | "value":"uniqueStorageAccountName" 4 | }, 5 | "adminUsername": { 6 | "value": "" 7 | }, 8 | "adminPassword": { 9 | "value": "" 10 | }, 11 | "dnsNameForPublicIP": { 12 | "value": "uniqueDnsNameForPublicIP" 13 | }, 14 | "location": { 15 | "value": "West US" 16 | }, 17 | "virtualNetworkName": { 18 | "value": "myVNET" 19 | }, 20 | "vmSize": { 21 | "value": "Standard_A0" 22 | }, 23 | "vmName" : { 24 | "value" : "myVM" 25 | }, 26 | "publicIPAddressName" : { 27 | "value" : "myPublicIP" 28 | }, 29 | "nicName" : { 30 | "value" : "myNic" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /mongodb-on-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Install Mongo DB on an Ubuntu VM using Custom Script Linux Extension", 3 | "description": "This template deploys Mongo DB on an Ubuntu Virtual Machine. This template also deploys a Storage Account, Virtual Network, Public IP addresses and a Network Interface.", 4 | "summary": "Install Mongo DB on an Ubuntu VM using Custom Script Linux Extension", 5 | "githubUsername": "mahthi", 6 | "dateUpdated": "2015-03-22" 7 | } 8 | -------------------------------------------------------------------------------- /mongodb-on-ubuntu/mongo-install-ubuntu.sh: -------------------------------------------------------------------------------- 1 | # Configure mongodb.list file with the correct location 2 | sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 3 | echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list 4 | 5 | # Install updates 6 | sudo apt-get -y update 7 | 8 | #Install Mongo DB 9 | sudo apt-get install -y mongodb-10gen 10 | -------------------------------------------------------------------------------- /nagios-on-ubuntu/README.md: -------------------------------------------------------------------------------- 1 | # Install Nagios Core on Ubuntu Virtual Machines using Custom Script Linux Extension 2 | 3 | 4 | 5 | 6 | 7 | This template deploys Nagios Core, a host/service/network monitoring solution released under the GNU General Public License. This template also provisions a storage account, virtual network, public IP addresses and network interfaces required by the installation. 8 | 9 | Visit the Nagios homepage at http://www.nagios.org for documentation, new releases, bug reports, information on discussion forums, and more. 10 | 11 | The template requires the following parameters: 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | storageAccountName | Unique namespace for a new storage account where the virtual machine's disks will be placed (cannot be an existing storage account) | 16 | | adminUsername | Admin user name for the virtual machine | 17 | | adminPassword | Admin password for the virtual machine | 18 | | region | Region name where the corresponding Azure artifacts will be created | 19 | | virtualNetworkName | Name of virtual network | 20 | | subnetName | Name of the virtual network subnet | 21 | | addressPrefix | The IP address mask used by the virtual network | 22 | | subnetPrefix | The subnet mask used by the virtual network subnet | 23 | | domainName | Domain name of the publicly accessible Apache web server hosting Nagios | 24 | | tshirtSize | T-shirt size of the Nagios deployment | 25 | 26 | Topology 27 | -------- 28 | The Nagios deployment topology is comprised of a single VM instance that can be customized and scaled up using the _tshirtSize_ parameter. The following table outlines the VM characteristics for each supported t-shirt size: 29 | 30 | | T-Shirt Size | VM Size | CPU Cores | Memory | 31 | |:--- |:---|:---|:---| 32 | | Small | Standard_A1 | 1 | 1.75 GB | 33 | | Medium | Standard_D1 | 1 | 3.5 GB | 34 | | Large | Standard_D2 | 2 | 7 GB | 35 | | XLarge | Standard_D3 | 4 | 14 GB | 36 | | XXLarge | Standard_D3 | 8 | 28 GB | 37 | 38 | ##Known Issues and Limitations 39 | - A single instance installation Nagios Core is performed by the template 40 | - This template does not install any monitoring targets -------------------------------------------------------------------------------- /nagios-on-ubuntu/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountName": { 3 | "value": "armdeploy4" 4 | }, 5 | "adminUsername": { 6 | "value": "NagiosAdmin" 7 | }, 8 | "adminPassword": { 9 | "value": "" 10 | }, 11 | "region": { 12 | "value": "West US" 13 | }, 14 | "virtualNetworkName": { 15 | "value": "nagiosClustVnet" 16 | }, 17 | "subnetName": { 18 | "value": "Subnet1" 19 | }, 20 | "addressPrefix": { 21 | "value": "10.0.0.0/16" 22 | }, 23 | "subnetPrefix": { 24 | "value": "10.0.0.0/24" 25 | }, 26 | "domainName": { 27 | "value": "nagiosonazure" 28 | }, 29 | "tshirtSize": { 30 | "value": "Medium" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /nagios-on-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Nagios Core on Ubuntu VMs", 3 | "description": "This template installs and configures Nagios Core, the industry standard, Open Source IT monitoring system that enables organizations to identify and resolve IT infrastructure problems before they affect critical business processes", 4 | "summary": "This template creates a Nagios Core installation on Ubuntu virtual machines", 5 | "githubUsername": "TheAzureGuy", 6 | "dateUpdated": "2015-04-10" 7 | } -------------------------------------------------------------------------------- /postgresql-on-ubuntu/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountNamePrefix": { 3 | "value": "psgwgddsg" 4 | }, 5 | "adminUsername": { 6 | "value": "adminuser" 7 | }, 8 | "region": { 9 | "value": "West US" 10 | }, 11 | "adminPassword": { 12 | "value": "azure@1234" 13 | }, 14 | "domainName": { 15 | "value": "kasafdf" 16 | }, 17 | "replicatorPassword": { 18 | "value": "azure@1234" 19 | }, 20 | "jumpbox": { 21 | "value": "Enabled" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /postgresql-on-ubuntu/empty-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "adminPassword": { 6 | "type": "securestring", 7 | "defaultValue": "" 8 | }, 9 | "commonSettings": { 10 | "type": "object", 11 | "defaultValue": {} 12 | }, 13 | "networkSettings": { 14 | "type": "object", 15 | "defaultValue": {} 16 | }, 17 | "machineSettings": { 18 | "type": "object", 19 | "defaultValue": {} 20 | }, 21 | "osSettings": { 22 | "type": "object", 23 | "defaultValue": {} 24 | }, 25 | "appSettings": { 26 | "type": "object", 27 | "defaultValue": {} 28 | }, 29 | "appPassword": { 30 | "type": "securestring", 31 | "defaultValue": "" 32 | }, 33 | "subnet": { 34 | "type": "object", 35 | "defaultValue": {} 36 | }, 37 | "dnsName": { 38 | "type": "string", 39 | "defaultValue":"" 40 | }, 41 | "storageSettings": { 42 | "type": "object", 43 | "defaultValue": {} 44 | } 45 | }, 46 | "variables": {}, 47 | "resources": [], 48 | "outputs": {} 49 | } -------------------------------------------------------------------------------- /postgresql-on-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "PostgreSQL 9.3 on Ubuntu VMs", 3 | "description": "This template creates PostgreSQL streaming replication from one master to one or more slaves each configured with multiple striped data disks. The database servers are deployed into a private subnet with an optional externally accessible jumpbox.", 4 | "summary": "PostgreSQL stream-replication with multiple slave servers and a publicly accessible jumpbox VM", 5 | "githubUsername": "trentmswanson", 6 | "dateUpdated": "2015-04-26" 7 | } 8 | -------------------------------------------------------------------------------- /postgresql-on-ubuntu/shared-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "region": { 6 | "type": "string" 7 | }, 8 | "storageSettings": { 9 | "type": "object" 10 | }, 11 | "availabilitySetSettings": { 12 | "type": "object" 13 | }, 14 | "networkSettings": { 15 | "type": "object" 16 | } 17 | }, 18 | "variables": {}, 19 | "resources": [ 20 | { 21 | "type": "Microsoft.Storage/storageAccounts", 22 | "name": "[concat(parameters('storageSettings').name, copyindex())]", 23 | "apiVersion": "2015-05-01-preview", 24 | "location": "[parameters('region')]", 25 | "copy": { 26 | "name":"dbStoragePoolLoop", 27 | "count": "[parameters('storageSettings').count]" 28 | }, 29 | "properties": { 30 | "accountType": "Standard_LRS" 31 | } 32 | }, 33 | { 34 | "apiVersion": "2015-05-01-preview", 35 | "type": "Microsoft.Network/virtualNetworks", 36 | "name": "[parameters('networkSettings').vnetName]", 37 | "location": "[parameters('region')]", 38 | "properties": { 39 | "addressSpace": { 40 | "addressPrefixes": [ 41 | "[parameters('networkSettings').addressPrefix]" 42 | ] 43 | }, 44 | "subnets": [ 45 | { 46 | "name": "[parameters('networkSettings').subnets.dmz.name]", 47 | "properties": { 48 | "addressPrefix": "[parameters('networkSettings').subnets.dmz.prefix]" 49 | } 50 | }, 51 | { 52 | "name": "[parameters('networkSettings').subnets.data.name]", 53 | "properties": { 54 | "addressPrefix": "[parameters('networkSettings').subnets.data.prefix]" 55 | } 56 | } 57 | ] 58 | } 59 | }, 60 | { 61 | "type": "Microsoft.Compute/availabilitySets", 62 | "name": "[parameters('availabilitySetSettings').name]", 63 | "apiVersion": "2015-05-01-preview", 64 | "location": "[parameters('region')]", 65 | "properties": { 66 | "platformFaultDomainCount": "[parameters('availabilitySetSettings').fdCount]", 67 | "platformUpdateDomainCount": "[parameters('availabilitySetSettings').udCount]" 68 | } 69 | } 70 | ], 71 | "outputs": {} 72 | } -------------------------------------------------------------------------------- /python-proxy-on-ubuntu/README.md: -------------------------------------------------------------------------------- 1 | # Install Python Proxy on a Ubuntu Virtual Machine using Custom Script Linux Extension 2 | 3 | 4 | 5 | 6 | 7 | This template deploys Python Proxy on a Ubuntu Virtual Machine. This template also deploys a Storage Account, Virtual Network, Public IP addresses and a Network Interface. 8 | 9 | Below are the parameters that the template expects 10 | 11 | | Name | Description | 12 | |:--- |:---| 13 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 14 | | adminUsername | Username for the Virtual Machines | 15 | | adminPassword | Password for the Virtual Machine | 16 | | dnsNameForPublicIP | Unique DNS Name for the Public IP used to access the Virtual Machine. | 17 | | subscriptionId | Subscription ID where the template will be deployed | 18 | | vmSourceImageName | Source Image Name for the VM. Example: b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_5-LTS-amd64-server-20140927-en-us-30GB | 19 | | location | location where the resources will be deployed | 20 | | virtualNetworkName | Name of Virtual Network | 21 | | vmSize | Size of the Virtual Machine | 22 | | vmName | Name of Virtual Machine | 23 | | publicIPAddressName | Name of Public IP Address Name | 24 | | nicName | Name of Network Interface | 25 | -------------------------------------------------------------------------------- /python-proxy-on-ubuntu/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName" : { 3 | "value":"uniqueStorageAccountName" 4 | }, 5 | "adminUsername": { 6 | "value": "" 7 | }, 8 | "adminPassword": { 9 | "value": "" 10 | }, 11 | "dnsNameForPublicIP": { 12 | "value": "uniqueDnsNameForPublicIP" 13 | }, 14 | "imagePublisher":{ 15 | "value" : "Canonical" 16 | }, 17 | "imageOffer": { 18 | "value": "UbuntuServer" 19 | }, 20 | "imageSKU": { 21 | "value": "14.04.2-LTS" 22 | }, 23 | "location": { 24 | "value": "West US" 25 | }, 26 | "virtualNetworkName": { 27 | "value": "myVNET" 28 | }, 29 | "vmSize": { 30 | "value": "Standard_A0" 31 | }, 32 | "vmName" : { 33 | "value" : "myVM" 34 | }, 35 | "publicIPAddressName" : { 36 | "value" : "myPublicIP" 37 | }, 38 | "nicName" : { 39 | "value" : "myNic" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /python-proxy-on-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Install Python Proxy on an Ubuntu VM using Custom Script Linux Extension", 3 | "description": "This template deploys Python Proxy on an Ubuntu Virtual Machine. This template also deploys a Storage Account, Virtual Network, Public IP addresses and a Network Interface.", 4 | "summary": "Install Python Proxy on an Ubuntu VM using Custom Script Linux Extension", 5 | "githubUsername": "yuezh", 6 | "dateUpdated": "2015-04-23" 7 | } 8 | -------------------------------------------------------------------------------- /python-proxy-on-ubuntu/python-proxy-install-ubuntu.sh: -------------------------------------------------------------------------------- 1 | #Install pip 2 | apt-get update 3 | apt-get install python-pip python-dev build-essential -y 4 | pip install proxy.py 5 | 6 | host=`ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'` 7 | 8 | init_script="/etc/init/pythonproxy.conf" 9 | echo "#Python Proxy" > $init_script 10 | echo "" >> $init_script 11 | echo "description \"A http proxy service\"" >> $init_script 12 | echo "author \"Yue Zhang\"" >> $init_script 13 | echo "" >> $init_script 14 | echo "exec proxy.py --host $host --port 8888" >> $init_script 15 | 16 | service pythonproxy start 17 | 18 | -------------------------------------------------------------------------------- /redis-high-availability/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountName": { 3 | "value": "redisdeploy1" 4 | }, 5 | "adminUsername": { 6 | "value": "" 7 | }, 8 | "adminPassword": { 9 | "value": "" 10 | }, 11 | "region": { 12 | "value": "West US" 13 | }, 14 | "virtualNetworkName": { 15 | "value": "redisClustVnet" 16 | }, 17 | "subnetName": { 18 | "value": "Subnet1" 19 | }, 20 | "addressPrefix": { 21 | "value": "10.0.0.0/16" 22 | }, 23 | "subnetPrefix": { 24 | "value": "10.0.0.0/24" 25 | }, 26 | "nodeAddressPrefix": { 27 | "value": "10.0.0.1" 28 | }, 29 | "redisVersion": { 30 | "value": "3.0.0" 31 | }, 32 | "redisClusterName": { 33 | "value": "redis-arm-cluster" 34 | }, 35 | "jumpbox": { 36 | "value": "Enabled" 37 | }, 38 | "tshirtSize": { 39 | "value": "Small" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /redis-high-availability/empty-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "commonSettings": { 6 | "type": "object", 7 | "metadata": { 8 | "Description": "Common settings object" 9 | } 10 | }, 11 | "storageSettings": { 12 | "type": "object", 13 | "metadata": { 14 | "Description": "Storage settings object" 15 | } 16 | }, 17 | "networkSettings": { 18 | "type": "object", 19 | "metadata": { 20 | "Description": "Network settings object" 21 | } 22 | }, 23 | "machineSettings": { 24 | "type": "object", 25 | "metadata": { 26 | "Description": "Machine settings object" 27 | } 28 | }, 29 | "adminPassword": { 30 | "type": "securestring", 31 | "metadata": { 32 | "Description": "Administrator password used when provisioning virtual machines" 33 | } 34 | } 35 | }, 36 | "variables": { 37 | }, 38 | "resources": [ 39 | ], 40 | "outputs": { 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /redis-high-availability/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Redis cluster on Ubuntu VMs", 3 | "description": "This template creates a Redis cluster on Ubuntu virtual machine images, configures persistence and applies well known optimizations and proven practices", 4 | "summary": "This template creates a Redis cluster on Ubuntu virtual machines", 5 | "githubUsername": "TheAzureGuy", 6 | "dateUpdated": "2015-04-06" 7 | } -------------------------------------------------------------------------------- /redis-high-availability/redis-sentinel-startup.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | ### BEGIN INIT INFO 3 | # Provides: redis-sentinel 4 | # Required-Start: $syslog $remote_fs 5 | # Required-Stop: $syslog $remote_fs 6 | # Should-Start: $local_fs 7 | # Should-Stop: $local_fs 8 | # Default-Start: 2 3 4 5 9 | # Default-Stop: 0 1 6 10 | # Short-Description: redis-sentinel - Failover for Redis 11 | # Description: redis-sentinel - Failover for Redis 12 | ### END INIT INFO 13 | 14 | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 15 | DAEMON=/usr/local/bin/redis-sentinel 16 | DAEMON_ARGS=/etc/redis/sentinel.conf 17 | NAME=redis-sentinel 18 | DESC=redis-sentinel 19 | PIDFILE=/var/run/redis-sentinel.pid 20 | 21 | case "$1" in 22 | start) 23 | echo -n "Starting $DESC: " 24 | touch $PIDFILE 25 | chown redis:redis $PIDFILE 26 | if start-stop-daemon --start --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS 27 | then 28 | echo "$NAME." 29 | else 30 | echo "failed" 31 | fi 32 | ;; 33 | stop) 34 | echo -n "Stopping $DESC: " 35 | if start-stop-daemon --stop --retry 10 --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON 36 | then 37 | echo "$NAME." 38 | else 39 | echo "failed" 40 | fi 41 | rm -f $PIDFILE 42 | ;; 43 | 44 | restart|force-reload) 45 | ${0} stop 46 | ${0} start 47 | ;; 48 | 49 | status) 50 | echo -n "$DESC is " 51 | if start-stop-daemon --stop --quiet --signal 0 --name ${NAME} --pidfile ${PIDFILE} 52 | then 53 | echo "running" 54 | else 55 | echo "not running" 56 | exit 1 57 | fi 58 | ;; 59 | 60 | *) 61 | echo "Usage: /etc/init.d/$NAME {start|stop|status|restart|force-reload}" >&2 62 | exit 1 63 | ;; 64 | esac 65 | 66 | exit 0 -------------------------------------------------------------------------------- /resource-loop-vms-userimage/README.md: -------------------------------------------------------------------------------- 1 | # Deploy 'n' Virtual Machines from a user image using Resource Loops 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create 'N' number of Virtual Machines from a User image based on the 'numberOfInstances' parameter specified during the template deployment. This template also deploys a Virtual Network, 'N' number of Public IP addresses/Network Inerfaces/Virtual Machines. 8 | 9 | Prerequisite: The Storage Account with the User Image VHD should already exist in the same resource group. 10 | 11 | Note: The Recommended limit of number of disks per Storage Account is 40. 12 | 13 | Below are the parameters that the template expects 14 | 15 | | Name | Description | 16 | |:--- |:---| 17 | | userImageStorageAccountName | Name of the Storage Account where the User Image disk is placed. | 18 | | userImageStorageContainerName | Name of the Container Name in the Storage Account where the User Image disk is placed. | 19 | | userImageVhdName | Name of the User Image VHD file. | 20 | | osType | Specify the type of the OS of the User Image (Windows|Linux) | 21 | | adminUsername | Username for the Virtual Machines | 22 | | adminPassword | Password for the Virtual Machine | 23 | | vmNamePrefix | VM Name Prefix for the Virtual Machine Instances | 24 | | subscriptionId | Subscription ID where the template will be deployed | 25 | | numberOfInstances | Number of Virtual Machine instances to create | 26 | | region | Region where the resources will be deployed | 27 | | virtualNetworkName | Name of Virtual Network | 28 | | vmSize | Size of the Virtual Machine | 29 | -------------------------------------------------------------------------------- /resource-loop-vms-userimage/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "userImageStorageAccountName": { 3 | "value" : "userImageStorageAccountName" 4 | }, 5 | "userImageStorageContainerName" : { 6 | "value" : "userImageStorageContainerName" 7 | }, 8 | "userImageVhdName" : { 9 | "value" : "userImageVhdName" 10 | }, 11 | "osType" : { 12 | "value" : "linux" 13 | }, 14 | "vmNamePrefix" : { 15 | "value" : "cloudvm" 16 | }, 17 | "adminUsername": { 18 | "value": "" 19 | }, 20 | "adminPassword": { 21 | "value": "" 22 | }, 23 | "numberOfInstances": { 24 | "value": 2 25 | }, 26 | "region": { 27 | "value": "West US" 28 | }, 29 | "virtualNetworkName": { 30 | "value": "cloudVNET" 31 | }, 32 | "vmSize": { 33 | "value": "Standard_A2" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /resource-loop-vms-userimage/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Deploy 'n' Virtual Machines from a user image using Resource Loops", 3 | "description": "This template allows you to create 'N' number of Virtual Machines from a User image based on the 'numberOfInstances' parameter specified during the template deployment. This template also deploys a Virtual Network, 'N' number of Public IP addresses/Network Inerfaces/Virtual Machines.", 4 | "summary": "Deploy 'n' Virtual Machines from a user image using Resource Loops", 5 | "githubUsername": "mahthi", 6 | "dateUpdated": "2015-04-04" 7 | } 8 | -------------------------------------------------------------------------------- /resource-loop-vms-vnet/README.md: -------------------------------------------------------------------------------- 1 | # Create Virtual Machines using Resource Loops 2 | 3 | 4 | 5 | 6 | 7 | This template allows you to create 'N' number of Virtual Machines based on the 'numberOfInstances' parameter specified during the template deployment. This template also deploys a Storage Account, Virtual Network, 'N' number of Public IP addresses/Network Inerfaces/Virtual Machines. 8 | 9 | Note: The Recommended limit of number of disks per Storage Account is 40. 10 | 11 | Below are the parameters that the template expects 12 | 13 | | Name | Description | 14 | |:--- |:---| 15 | | newStorageAccountName | Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed. | 16 | | adminUsername | Username for the Virtual Machines | 17 | | adminPassword | Password for the Virtual Machine | 18 | | numberOfInstances | Number of Virtual Machine instances to create | 19 | | region | Region where the resources will be deployed | 20 | | vmSize | Size of the Virtual Machine | 21 | | imagePublisher | Name of Image Publisher | 22 | | imageOffer | Name of Image Publisher offer | 23 | | imageSKU | Name of SKU for the selected offer | 24 | -------------------------------------------------------------------------------- /resource-loop-vms-vnet/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName" : { 3 | "value":"kaystore4d" 4 | }, 5 | "adminUsername": { 6 | "value": "kay" 7 | }, 8 | "adminPassword": { 9 | "value": "Azure12345" 10 | }, 11 | "numberOfInstances": { 12 | "value": 2 13 | }, 14 | "location": { 15 | "value": "West US" 16 | }, 17 | "vmSize": { 18 | "value": "Standard_D1" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /resource-loop-vms-vnet/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Create Virtual Machines using Resource Loops", 3 | "description": "Create Virtual Machines using Resource Loops", 4 | "summary": "Create Virtual Machines using Resource Loops", 5 | "githubUsername": "mahthi", 6 | "dateUpdated": "2015-04-04" 7 | } 8 | -------------------------------------------------------------------------------- /shared_scripts/README.md: -------------------------------------------------------------------------------- 1 | # Shared Scripts 2 | 3 | This folder contains a set of reusable scripts to perform tasks that are common across a number of resource templates. Given the fact that these scripts are used by multiple resource templates, please take care in making changes. The goal is to promote reuse and have a set of very well tested, reviewed, and resilient scripts to use when performing those common tasks, like formatting a data disk. 4 | 5 | ##Versioning 6 | - Do not bump the version on the file name when making backwards compatible bug fixes 7 | - Create a copy of the file and bump the minor version when adding functionality that is backwards compatible 8 | - Create a copy of the file and bump the major version when making changes that are not backwards compatible 9 | 10 | | Name | Author | Description | 11 | |:----------------------------|:-----------------------|:------------------------------------------------------| 12 | | ubuntu/vm-disk-utils | [trentmswanson](https://github.com/trentmswanson) | This script automates the partitioning and formatting of data disks as individual disks or in a RAID0 configuration.| 13 | -------------------------------------------------------------------------------- /spark-on-ubuntu/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountName": { 3 | "value": "" 4 | }, 5 | "adminUsername": { 6 | "value": "adminuser" 7 | }, 8 | "adminPassword": { 9 | "value": "azure@1234" 10 | }, 11 | "region": { 12 | "value": "West US" 13 | }, 14 | "virtualNetworkName": { 15 | "value": "sparkClustVnet" 16 | }, 17 | "subnetName": { 18 | "value": "Subnet1" 19 | }, 20 | "addressPrefix": { 21 | "value": "10.0.0.0/16" 22 | }, 23 | "subnetPrefix": { 24 | "value": "10.0.0.0/24" 25 | }, 26 | "sparkVersion": { 27 | "value": "3.0.0" 28 | }, 29 | "sparkClusterName": { 30 | "value": "spark-arm-cluster" 31 | }, 32 | "sparkNodeIPAddressPrefix": { 33 | "value": "10.0.0.1" 34 | }, 35 | "sparkSlaveNodeIPAddressPrefix": { 36 | "value": "10.0.0.3" 37 | }, 38 | "jumpbox": { 39 | "value": "enabled" 40 | }, 41 | "tshirtSize": { 42 | "value": "S" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /spark-on-ubuntu/jumpbox-resources-disabled.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | }, 6 | "variables": { 7 | }, 8 | "resources": [ 9 | ], 10 | "outputs": { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spark-on-ubuntu/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Provisions a Spark Cluster on Ubuntu Virtual Machines", 3 | "description": "This template creates a Spark cluster on Ubuntu virtual machine image, enables persistence (by default) and applies all well-known optimizations and best practices", 4 | "summary": "This template creates a Spark Cluster on Ubuntu virtual machines", 5 | "githubUsername": "CognosysTech", 6 | "dateUpdated": "2015-04-06" 7 | } 8 | -------------------------------------------------------------------------------- /spark-on-ubuntu/spark-cluster-install.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/github/azure-quickstart-templates/ed782d32fc6eab84c1a695b511b049098cb42307/spark-on-ubuntu/spark-cluster-install.sh -------------------------------------------------------------------------------- /spark-ubuntu-multidisks/azuredeploy-parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "storageAccountNamePrefix": { 3 | "value": "cgnsparkstorev1" 4 | }, 5 | "adminUsername": { 6 | "value": "adminuser" 7 | }, 8 | "region": { 9 | "value": "West US" 10 | }, 11 | "adminPassword": { 12 | "value": "azure@1234" 13 | }, 14 | "domainName": { 15 | "value": "cgnsparkv1" 16 | }, 17 | "sparkversion": { 18 | "value": "1.2.1" 19 | }, 20 | "jumpbox": { 21 | "value": "Enabled" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /spark-ubuntu-multidisks/empty-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "adminPassword": { 6 | "type": "securestring", 7 | "defaultValue": "" 8 | }, 9 | "commonSettings": { 10 | "type": "object", 11 | "defaultValue": {} 12 | }, 13 | "networkSettings": { 14 | "type": "object", 15 | "defaultValue": {} 16 | }, 17 | "machineSettings": { 18 | "type": "object", 19 | "defaultValue": {} 20 | }, 21 | "osSettings": { 22 | "type": "object", 23 | "defaultValue": {} 24 | }, 25 | "appSettings": { 26 | "type": "object", 27 | "defaultValue": {} 28 | }, 29 | "appPassword": { 30 | "type": "securestring", 31 | "defaultValue": "" 32 | }, 33 | "subnet": { 34 | "type": "object", 35 | "defaultValue": {} 36 | }, 37 | "dnsName": { 38 | "type": "string", 39 | "defaultValue":"" 40 | } 41 | }, 42 | "variables": {}, 43 | "resources": [], 44 | "outputs": {} 45 | } -------------------------------------------------------------------------------- /spark-ubuntu-multidisks/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Spark on Ubuntu VMs", 3 | "description": "This template creates Spark streaming replication from one master to one or more slaves each configured with multiple striped data disks. The database servers are deployed into a private subnet with an optional externally accessible jumpbox.", 4 | "summary": "Spark stream-replication with multiple slave servers and a publicly accessible jumpbox VM", 5 | "githubUsername": "CognosysTech", 6 | "dateUpdated": "2015-04-26" 7 | } 8 | -------------------------------------------------------------------------------- /spark-ubuntu-multidisks/shared-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "region": { 6 | "type": "string" 7 | }, 8 | "storageSettings": { 9 | "type": "object" 10 | }, 11 | "availabilitySetSettings": { 12 | "type": "object" 13 | }, 14 | "networkSettings": { 15 | "type": "object" 16 | } 17 | }, 18 | "variables": {}, 19 | "resources": [ 20 | { 21 | "type": "Microsoft.Storage/storageAccounts", 22 | "name": "[concat(parameters('storageSettings').name, copyindex())]", 23 | "apiVersion": "2015-05-01-preview", 24 | "location": "[parameters('region')]", 25 | "copy": { 26 | "name":"dbStoragePoolLoop", 27 | "count": "[parameters('storageSettings').count]" 28 | }, 29 | "properties": { 30 | "accountType": "Standard_LRS" 31 | } 32 | }, 33 | { 34 | "apiVersion": "2015-05-01-preview", 35 | "type": "Microsoft.Network/virtualNetworks", 36 | "name": "[parameters('networkSettings').vnetName]", 37 | "location": "[parameters('region')]", 38 | "properties": { 39 | "addressSpace": { 40 | "addressPrefixes": [ 41 | "[parameters('networkSettings').addressPrefix]" 42 | ] 43 | }, 44 | "subnets": [ 45 | { 46 | "name": "[parameters('networkSettings').subnets.dmz.name]", 47 | "properties": { 48 | "addressPrefix": "[parameters('networkSettings').subnets.dmz.prefix]" 49 | } 50 | }, 51 | { 52 | "name": "[parameters('networkSettings').subnets.data.name]", 53 | "properties": { 54 | "addressPrefix": "[parameters('networkSettings').subnets.data.prefix]" 55 | } 56 | } 57 | ] 58 | } 59 | }, 60 | { 61 | "type": "Microsoft.Compute/availabilitySets", 62 | "name": "[parameters('availabilitySetSettings').name]", 63 | "apiVersion": "2015-05-01-preview", 64 | "location": "[parameters('region')]", 65 | "properties": { 66 | "platformFaultDomainCount": "[parameters('availabilitySetSettings').fdCount]", 67 | "platformUpdateDomainCount": "[parameters('availabilitySetSettings').udCount]" 68 | } 69 | } 70 | ], 71 | "outputs": {} 72 | } -------------------------------------------------------------------------------- /spark-ubuntu-multidisks/spark-cluster-install.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/github/azure-quickstart-templates/ed782d32fc6eab84c1a695b511b049098cb42307/spark-ubuntu-multidisks/spark-cluster-install.sh -------------------------------------------------------------------------------- /symantec-extension-windows-vm/README.md: -------------------------------------------------------------------------------- 1 | # Create a Windows VM with Symantec Endpoint Protection extension enabled 2 | 3 | 4 | 5 | 6 | 7 | Create a Windows VM with Symantec Endpoint Protection extension enabled. This is a sample template that shows how to set up a VM with a trial version of Symantec Endpoint Protection service with this configuration. -------------------------------------------------------------------------------- /symantec-extension-windows-vm/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "" 7 | }, 8 | "location": { 9 | "value": "" 10 | }, 11 | "publicIPAddressName": { 12 | "value": "" 13 | }, 14 | "publicIPAddressType": { 15 | "value": "Dynamic" 16 | }, 17 | "vmName": { 18 | "value": "" 19 | }, 20 | "vmSize": { 21 | "value": "Standard_A2" 22 | }, 23 | "adminUserName": { 24 | "value": "" 25 | }, 26 | "adminPassword": { 27 | "value": "" 28 | }, 29 | "virtualNetworkName": { 30 | "value": "" 31 | }, 32 | "nicName": { 33 | "value": "" 34 | }, 35 | "vmExtensionName": { 36 | "value": "malware" 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /symantec-extension-windows-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Symantec Endpoint Protection extension (trial license) on Windows VM", 3 | "description": "This template creates a Windows VM and sets up a trial version of Symantec Endpoint Protection", 4 | "summary": "Windows VM with Symantec Endpoint Protection", 5 | "githubUsername": "sung-msft", 6 | "dateUpdated": "2015-04-27" 7 | } 8 | -------------------------------------------------------------------------------- /windows-puppet-agent/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "newStorageAccountName": { 3 | "value": "your storage" 4 | }, 5 | "adminUserName": { 6 | "value": "admin name" 7 | }, 8 | "adminPassword": { 9 | "value": "admin password" 10 | }, 11 | "vmDnsName": { 12 | "value": "unique dns name" 13 | }, 14 | "imagePublisher": { 15 | "value": "image Publisher" 16 | }, 17 | "imageOffer": { 18 | "value": "image Offer" 19 | }, 20 | "imageSKU": { 21 | "value": "image SKU" 22 | }, 23 | "location": { 24 | "value": "VM Location" 25 | }, 26 | "vmSize": { 27 | "value": "VM Size" 28 | }, 29 | "puppet_master_server": { 30 | "value": "Puppet Master Agent" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /windows-puppet-agent/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Puppet agent on Windows VM", 3 | "description": "Deploy a windows VM with Puppet Agent", 4 | "summary": "Deploy an Windows VM With Puppet Agent", 5 | "githubUsername": "kundanap", 6 | "dateUpdated": "2015-04-23" 7 | } 8 | -------------------------------------------------------------------------------- /windows-puppet-agent/readme.md: -------------------------------------------------------------------------------- 1 | # Deploy a windows VM with Puppet. 2 | 3 | 4 | | Deploy to Azure | Author | Template Name | Description | 5 | |:-----------------|:--------------------------------| :---------------| :---------------| 6 | | | [kundanap](https://github.com/gbowerman) | [Puppet Agent on windows Azure VM(https://github.com/azurermtemplates/azurermtemplates/tree/master/windows-puppet-agent) | This template provisions a windows VM on Azure and bootstraps it with Puppet agent version 3.2.| 7 | -------------------------------------------------------------------------------- /windows-vm-push-certificate/README.md: -------------------------------------------------------------------------------- 1 | # Push a certificate onto a VM 2 | 3 | 4 | 5 | 6 | 7 | Push a certificate onto a VM. Pass in the URL of the secret in KeyVault. 8 | 9 | Pre-Requisistes - You need a certificate 10 | 11 | These are the steps that need to be followed to upload the certificate into the KeyVault as a secret 12 | 13 | 1. base64 encode the cert file 14 | 2. Paste the base64 value into data field in this JSON object 15 | { 16 | “data”:””, 17 | “dataType” :””, 18 | “password”:”” 19 | } 20 | 21 | 3. base64 the above JSON object 22 | 4. Convert the base64 value into a secure string 23 | $secret = ConvertTo-SecureString -String 'password' -AsPlainText –Force 24 | 25 | 5. Then use the secure string value for the SecretValue in this cmdlet 26 | Set-AzureKeyVaultSecret -VaultName 'Contoso' -Name 'ITSecret' –SecretValue $secret 27 | 28 | The following PowerShell script can make these steps easy 29 | 30 | $fileName = "C:\Users\kasing\Desktop\KayTest.pfx" 31 | $fileContentBytes = get-content $fileName -Encoding Byte 32 | $fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes) 33 | 34 | $jsonObject = @" 35 | { 36 | "data": "$filecontentencoded", 37 | "dataType" :"pfx", 38 | "password": "" 39 | } 40 | "@ 41 | 42 | $jsonObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject) 43 | $jsonEncoded = [System.Convert]::ToBase64String($jsonObjectBytes) 44 | 45 | $secret = ConvertTo-SecureString -String $jsonEncoded -AsPlainText –Force 46 | Set-AzureKeyVaultSecret -VaultName kayvault -Name testkay -SecretValue $secret 47 | -------------------------------------------------------------------------------- /windows-vm-push-certificate/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "" 7 | }, 8 | "location": { 9 | "value": "East US" 10 | }, 11 | "publicIPName": { 12 | "value": "" 13 | }, 14 | "publicIPAddressType": { 15 | "value": "Dynamic" 16 | }, 17 | "vmName": { 18 | "value": "" 19 | }, 20 | "vmSize": { 21 | "value": "Standard_A2" 22 | }, 23 | "adminUserName": { 24 | "value": "" 25 | }, 26 | "adminPassword": { 27 | "value": "" 28 | }, 29 | "virtualNetworkName": { 30 | "value": "" 31 | }, 32 | "nicName": { 33 | "value": "" 34 | }, 35 | "vaultName": { 36 | "value": "" 37 | }, 38 | "vaultResourceGroup": { 39 | "value": "" 40 | }, 41 | "secretUrlWithVersion": { 42 | "value": "" 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /windows-vm-push-certificate/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "itemDisplayName": "Push a certificate onto a Windows VM", 3 | "description": "Push a certificate onto a Windows VM", 4 | "summary": "Push a certificate onto a Windows VM", 5 | "githubUsername": "singhkay", 6 | "dateUpdated": "2015-04-27" 7 | } 8 | -------------------------------------------------------------------------------- /zookeper-cluster-ubuntu-vm/README.md: -------------------------------------------------------------------------------- 1 | # Create a Zookeeper cluster on Ubuntu VMs 2 | 3 | Create a Zookeeper cluster - 4 | 5 | 6 | 7 | This template creates a 3 node Zookeper cluster on Ubuntu VMs 8 | -------------------------------------------------------------------------------- /zookeper-cluster-ubuntu-vm/azuredeploy.parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "newStorageAccountName": { 6 | "value": "" 7 | }, 8 | "location": { 9 | "value": "" 10 | }, 11 | "publicIPAddressType": { 12 | "value": "Dynamic" 13 | }, 14 | "availabilitySetName": { 15 | "value": "" 16 | }, 17 | "vmName": { 18 | "value": "" 19 | }, 20 | "vmSize": { 21 | "value": "Standard_A2" 22 | }, 23 | "adminUserName": { 24 | "value": "" 25 | }, 26 | "adminPassword": { 27 | "value": "" 28 | }, 29 | "virtualNetworkName": { 30 | "value": "" 31 | }, 32 | "nicName": { 33 | "value": "" 34 | }, 35 | "vmExtensionName": { 36 | "value": "zookeeper" 37 | }, 38 | "customScriptFilePath": { 39 | "value": "https://raw.githubusercontent.com/azurermtemplates/azurermtemplates/master/zookeper-cluster-ubuntu-vm/zookeeper.sh" 40 | }, 41 | "customScriptCommandToExecute": { 42 | "value": "sh zookeeper.sh " 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /zookeper-cluster-ubuntu-vm/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "TemplateName": "Zookeeper cluster on Ubuntu VMs", 3 | "Description": "This template creates a 3 node Zookeper cluster on Ubuntu VMs", 4 | "ShortDescription": "Deploy a Zookeeper cluster on Ubuntu VMs", 5 | "GithubUsername": "singhkay", 6 | "DateUpdated": "2015-043-25" 7 | } 8 | -------------------------------------------------------------------------------- /zookeper-cluster-ubuntu-vm/zookeeper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u75-b13/jdk-7u75-linux-x64.tar.gz" 3 | tar -xvf jdk-7* 4 | mkdir /usr/lib/jvm 5 | mv ./jdk1.7* /usr/lib/jvm/jdk1.7.0 6 | update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0/bin/java" 1 7 | update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0/bin/javac" 1 8 | update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0/bin/javaws" 1 9 | chmod a+x /usr/bin/java 10 | chmod a+x /usr/bin/javac 11 | chmod a+x /usr/bin/javaws 12 | 13 | cd /usr/local 14 | 15 | wget "http://mirrors.ukfast.co.uk/sites/ftp.apache.org/zookeeper/stable/zookeeper-3.4.6.tar.gz" 16 | tar -xvf "zookeeper-3.4.6.tar.gz" 17 | 18 | touch zookeeper-3.4.6/conf/zoo.cfg 19 | 20 | echo "tickTime=2000" >> zookeeper-3.4.6/conf/zoo.cfg 21 | echo "dataDir=/var/lib/zookeeper" >> zookeeper-3.4.6/conf/zoo.cfg 22 | echo "clientPort=2181" >> zookeeper-3.4.6/conf/zoo.cfg 23 | echo "initLimit=5" >> zookeeper-3.4.6/conf/zoo.cfg 24 | echo "syncLimit=2" >> zookeeper-3.4.6/conf/zoo.cfg 25 | echo "server.1=10.0.0.4:2888:3888" >> zookeeper-3.4.6/conf/zoo.cfg 26 | echo "server.2=10.0.0.5:2888:3888" >> zookeeper-3.4.6/conf/zoo.cfg 27 | echo "server.3=10.0.0.6:2888:3888" >> zookeeper-3.4.6/conf/zoo.cfg 28 | 29 | mkdir -p /var/lib/zookeeper 30 | 31 | echo $(($1+1)) >> /var/lib/zookeeper/myid 32 | 33 | zookeeper-3.4.6/bin/zkServer.sh start 34 | --------------------------------------------------------------------------------