Skip to content

Commit

Permalink
Release 1.0 of express template
Browse files Browse the repository at this point in the history
  • Loading branch information
vivekkumac committed Feb 23, 2018
1 parent 04e8059 commit 46e8e9a
Show file tree
Hide file tree
Showing 6 changed files with 321 additions and 10 deletions.
26 changes: 19 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
Netscaler Azure templates
--------------------------------------

**Introduction**
----------------
## Introduction
Welcome to the GitHub repository for Citrix Netscaler Azure templates. This is a repository for [Citrix NetScaler's](https://www.citrix.com/products/netscaler-adc/) templates for deploying Citrix NetScaler in Microsoft Azure Cloud Services. All of the templates in this repository have been developed by the NetScaler engineering team.

Welcome to the GitHub repository for Citrix Netscaler Azure templates for deploying Netscaler in Microsoft Azure Cloud Services. All of the templates in this repository have been developed by the Netscaler engineering team. There are two main directories: Supported and Experimental
## Citrix NetScaler VPX
Citrix NetScaler VPX is a virtual application delivery controller that combines the latest cloud-native features with a simple user experience. The NetScaler optimizes the user experience ensuring that applications are always available by using advanced L4-7 load balancing, traffic management and proven application acceleration such as HTTP compression and caching.

**Supported:**
The Supported directory has Netscaler Azure templates that have been created and fully tested by the Citrix team. Should you run into any issues while using these templates, you can get from Citrix Technical Support teams through standard procedures.
## Citrix NetScaler VPX in Azure
Citrix NetScaler VPX offers are available as resources in the Azure portal. This repository is an extension to provide additional deployments supported by Citrix.

**Experimental:**
The Experimental directory has Azure templates that have not yet completed full testing and are subject to change. Citrix does not provide technical support for templates in this directory. Caution is advised while using these templates.
## About these templates
Each template in this repository has co-located documentation describing the usage and architecture of the template. The templates attempt to codify recommended deployment architecture of the Citrix NetScaler VPX, or to introduce the user to the Citrix NetScaler or to demonstrate a particular feature / edition / option. Users can re-use / modify or enhance the templates to suit their particular production and testing needs. Most templates require sufficient subscriptions to portal.azure.com to create resource and deploy templates.

## Versioning
The master branch of the repository generally has the latest version of the template. Older released versions are tagged appropriately

## Support
For production issues with the templates, please contact Citrix Support through your normal support channels. If you have fixes / suggestions for improvements or requests, please raise an issue in this repository.

## Further reading
- VPX installation in Azure : https://docs.citrix.com/en-us/netscaler/12/deploying-vpx/deploy-vpx-on-azure.html
- Citrix NetScaler 12.0 Documention : https://docs.citrix.com/en-us/netscaler/12.html
- Citrix NetScaler Overview : https://www.citrix.com/products/netscaler-adc/resources/netscaler-vpx.html
1 change: 0 additions & 1 deletion docs/testfile6.md

This file was deleted.

1 change: 0 additions & 1 deletion experimental/testfile5.md

This file was deleted.

1 change: 0 additions & 1 deletion supported/testfilen4.md

This file was deleted.

20 changes: 20 additions & 0 deletions templates/express_single_nic/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## NetScaler VPX Express
NetScaler VPX Express is a free virtual application delivery controller (normal hourly Azure Virtual Machine rates apply). This Azure custom template deployment can be used for light production loads, testing and prototyping needs.


## Azure Custom Template description
This template creates an instance of the VPX Express from the VPX Express SKU image utilising a single subnet within provided virtual network. This template also utilizes a custom script that initializes the VPX instance. Initial configuration performed by the custom script includes network interface configuration, VIP configuration and feature configuration. Further configuration can be performed by logging in to the GUI or via SSH.

## Network architecture
The Azure custom template deploys the VPX in a single-NIC mode. The standard NetScaler IP addresses: NSIP (management IP), VIP (where load balanced applications are accessed) and SNIP (the IP used to send traffic to backend instances) are all provisioned on the single NIC and are drawn from the (RFC1918) address space of the provided virtual network's subnet. The (RFC1918) NSIP is mapped to the Public IP of the VPX Instance and the RFC1918 VIP is mapped to another public IP.

## Quick Launch Link

[![Create NetScaler VPX Express](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fcitrix%2Fnetscaler-azure-templates%2Fmaster%2Ftemplates%2Fexpress_single_nic%2FmainTemplate.json)


## Additional Links:

- VPX installation in Azure : https://docs.citrix.com/en-us/netscaler/12/deploying-vpx/deploy-vpx-on-azure.html
- NetScaler 12.0 Documentation : https://docs.citrix.com/en-us/netscaler/12.html
- NetScaler Overview : https://www.citrix.com/products/netscaler-adc/resources/netscaler-vpx.html
282 changes: 282 additions & 0 deletions templates/express_single_nic/mainTemplate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,282 @@
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string"
},
"virtualMachineName": {
"type": "string"
},
"virtualMachineSize": {
"type": "string"
},
"adminUsername": {
"type": "string"
},
"adminPassword": {
"type": "securestring"
},
"virtualNetworkName": {
"type": "string"
},
"vnetRG": {
"type": "string"
},
"vnetNewOrExisting": {
"type": "string"
},
"networkInterfaceName": {
"type": "string"
},
"networkSecurityGroupName": {
"type": "string"
},
"diagnosticsStorageAccountName": {
"type": "string"
},
"diagnosticsStorageAccountType": {
"type": "string"
},
"addressPrefix": {
"type": "string"
},
"subnetName": {
"type": "string"
},
"subnetPrefix": {
"type": "string"
},
"baseUrl": {
"defaultValue": "https://github.com/citrix/netscaler-azure-templates",
"type": "String",
"metadata": {
"artifactsBaseUrl": "",
"description": "The base URL for dependent assets"
}
}
},
"variables": {
"vnetId": "[resourceId(parameters('vnetRG'),'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]",
"subnetRef": "[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]",
"nicId": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]"
},
"resources": [{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('virtualMachineName'),'/', 'vpx-express')]",
"apiVersion": "2017-12-01",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName'))]"
],
"properties": {
"publisher": "Microsoft.OSTCExtensions",
"type": "CustomScriptForLinux",
"typeHandlerVersion": "1.5",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": ["https://nsmpscript.blob.core.windows.net/custom-script/express/custom_script.py"],
"enableInternalDNSCheck": "false"
},
"protectedSettings": {
"commandToExecute": "[concat('/var/python/bin/python custom_script.py ', parameters('adminPassword'))]"
}
}
}, {
"name": "[parameters('virtualMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2017-12-01",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]",
"[concat('Microsoft.Network/publicIpAddresses/', parameters('virtualMachineName'), '-nsip')]",
"[concat('Microsoft.Storage/storageAccounts/', parameters('diagnosticsStorageAccountName'))]"
],
"properties": {
"osProfile": {
"computerName": "[parameters('virtualMachineName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"customData": "[base64(concat('config=express;username=', parameters('adminUsername') ))]"
},
"hardwareProfile": {
"vmSize": "[parameters('virtualMachineSize')]"
},
"storageProfile": {
"imageReference": {
"publisher": "citrix",
"offer": "netscalervpx-120",
"sku": "netscalervpxexpress",
"version": "latest"
},
"osDisk": {
"createOption": "fromImage",
"managedDisk": {
"storageAccountType": "Standard_LRS"
}
},
"dataDisks": []
},
"networkProfile": {
"networkInterfaces": [{
"id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]"
}
]
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('diagnosticsStorageAccountName')), '2017-10-01').primaryEndpoints['blob']]"
}
}
},
"plan": {
"name": "netscalervpxexpress",
"publisher": "citrix",
"product": "netscalervpx-120"
}
}, {
"name": "[parameters('diagnosticsStorageAccountName')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2017-10-01",
"kind": "Storage",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('diagnosticsStorageAccountType')]"
},
"properties": {}
}, {
"name": "[parameters('virtualNetworkName')]",
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2017-10-01",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('addressPrefix')]"
]
},
"subnets": [{
"name": "[parameters('subnetName')]",
"properties": {
"addressPrefix": "[parameters('subnetPrefix')]"
}
}
]
},
"condition": "[equals(parameters('vnetNewOrExisting'),'new')]"
}, {
"name": "[parameters('networkInterfaceName')]",
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2017-10-01",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]",
"[concat('Microsoft.Network/publicIpAddresses/', parameters('virtualMachineName'), '-vip')]",
"[concat('Microsoft.Network/publicIpAddresses/', parameters('virtualMachineName'), '-nsip')]",
"[concat('Microsoft.Network/networkSecurityGroups/', parameters('networkSecurityGroupName'))]"
],
"properties": {
"ipConfigurations": [{
"name": "nsip",
"properties": {
"primary": true,
"subnet": {
"id": "[variables('subnetRef')]"
},
"privateIPAllocationMethod": "Dynamic",
"publicIpAddress": {
"id": "[resourceId('Microsoft.Network/publicIpAddresses', concat(parameters('virtualMachineName'), '-nsip'))]"
}
}
}, {
"name": "vip",
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
},
"privateIPAllocationMethod": "Dynamic",
"publicIpAddress": {
"id": "[resourceId('Microsoft.Network/publicIpAddresses', concat(parameters('virtualMachineName'), '-vip'))]"
}
}
}, {
"name": "snip",
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
},
"privateIPAllocationMethod": "Dynamic"
}
}
],
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]"
}
}
}, {
"name": "[concat(parameters('virtualMachineName'), '-vip')]",
"type": "Microsoft.Network/publicIpAddresses",
"apiVersion": "2017-10-01",
"location": "[parameters('location')]",
"properties": {
"publicIpAllocationMethod": "Dynamic"
},
"sku": {
"name": "Basic"
}
}, {
"name": "[concat(parameters('virtualMachineName'), '-nsip')]",
"type": "Microsoft.Network/publicIpAddresses",
"apiVersion": "2017-10-01",
"location": "[parameters('location')]",
"properties": {
"publicIpAllocationMethod": "Dynamic"
},
"sku": {
"name": "Basic"
}
}, {
"name": "[parameters('networkSecurityGroupName')]",
"type": "Microsoft.Network/networkSecurityGroups",
"apiVersion": "2017-10-01",
"location": "[parameters('location')]",
"properties": {
"securityRules": [{
"name": "ssh-rule",
"properties": {
"description": "Allow remote SSH",
"priority": 1000,
"protocol": "TCP",
"access": "Allow",
"direction": "Inbound",
"sourceAddressPrefix": "Internet",
"sourcePortRange": "*",
"destinationAddressPrefix": "*",
"destinationPortRange": "22"
}
}, {
"name": "web-rule",
"properties": {
"description": "Allow Secure WEB",
"priority": 1001,
"protocol": "Tcp",
"access": "Allow",
"direction": "Inbound",
"sourceAddressPrefix": "Internet",
"sourcePortRange": "*",
"destinationAddressPrefix": "*",
"destinationPortRange": "443"
}
}
]
}
}
],
"outputs": {
"adminUsername": {
"type": "string",
"value": "[parameters('adminUsername')]"
}
}
}

0 comments on commit 46e8e9a

Please sign in to comment.