Setup Ansible to efficiently manage N Linux VMs

by Gonzalo
Last updated: 23-03-2016

This advanced template deploys N Linux VMs ( Ubuntu) and it configures Ansible so you can easily manage all the VMS from the Ansible Controller 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 consistent configuration to all your VMS

This Azure Resource Manager (ARM) template was created by a member of the community and not by Microsoft. Each ARM template is licensed to you under a licence agreement by its owner, not Microsoft. Microsoft is not responsible for ARM templates provided and licensed by community members and does not screen for security, compatibility or performance. Community ARM templates are not supported under any Microsoft support programme or service and are made available AS IS without warranty of any kind.

Parameters

Parameter Name Description
storageAccountType Storage account Type. Standard_LRS or Premium_LRS
vmSize VM Size, for Premium Storage specify DS VMs.
vmSizeDataDisks Data disks Size in GBs
linuxFileSystem Linux File system
serversRole Servers role, for instance webtier, database.A tag will be created with the provided value
serversPurpose Servers purpose, for instance development, test, pre-production, production. A tag will be created with the provided value
numberOfVms Number of VMs. The template will create N number of identical VMs
adminUsername Admin user name
adminPassword Admin password
sshKeyData ssh public key for the admin user
sshStorageAccountName Private storage account name in which you are storing your ssh certificates
sshStorageAccountKey Private storage account key in which you are storing your ssh certificates
dnsLabelPrefix DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error.
publicIPType Public facing IP Type.

Use the template

PowerShell

New-AzureRmResourceGroupDeployment -Name <deployment-name> -ResourceGroupName <resource-group-name> -TemplateUri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/ansible-advancedlinux/azuredeploy.json
Install and configure Azure PowerShell

Command line

azure config mode arm
azure group deployment create <my-resource-group> <my-deployment-name> --template-uri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/ansible-advancedlinux/azuredeploy.json
Install and Configure the Azure Cross-Platform Command-Line Interface