Understanding Azure Provisioning
I'm producing a series of blog post that highlights the work I've done with an O'Reilly media video course. I will produce several posts a week to support this course, as seen below.
https://bit.ly/bruno-does-linux-data-java
The course is targeted towards developers who want to write Java applications on Linux and host those application in Azure.
These applications talk to today's top data stores, including:
- Azure Tables
- Azure Blobs
- Azure Queues
- SQL Server
- SQL Database
- MySQL
- PostGres
- DocumentDB
- MongoDB
- Cassandra
- Redis
How you can provision compute, networking, and storage in Azure
- The preferred way is through ARM - the declarative way
- JSON-based text files let's you provision infrastructure
- The imperative way is through scripting - doesn't scale as well
- Some customers take the approach to generate an ARM template with code as an effort to abstract away the complexities of the ARM templates
Slide 1 of 11 - Provisioning infrastructure
Compute, networking, and storage are bundled up into a resource group
- Typically, resource groups contain resources related to a specific application
- For example, you might bundle a SQL Server database, a web application, and the storage account in one resource group
- If you delete a resource group, you delete all the resources in that resource group
- Resource groups encapsulate the lifecycle of the resources inside of it
- When you provision resources with the Azure resource manager,, you always provision in the context of specific resource group
- Resources can be linked across resource groups
2lide 2 of 11 - Resource groups are containers
The Azure portal is also organized through resource groups
- The image to the right shows the "javavm" resource group
- You can see that it has a virtual machine, a network card, and a public IP address
Slide 2 of 11 - Resource groups are part of the Azure portal
Connecting to a VM
- Regardless of whether you have a Linux or Windows virtual machine, you can remote into it
- Putty is one of the approaches you can take with Windows to SSH into a Linux virtual machine
- Simply provide the IP address ( public IP address ) of your virtual machines remote into
- The default is port 22 for SSH, but that can be modified
- You can use network security groups to open and close specific ports in a virtual machine
Slide 3 of 11 - several options connecting to virtual machines (Linux or Windows)
Mac or Windows Support
- Mac OS comes in with the built-in ability for SSH
- For Windows you can download Putty
Slide 4 of 11 - Mac or Windows support
Code or JSON
- As explained previously, you can either use code or the declarative syntax using JSON with the Azure resource manager templates
- The three main sections for templates are:
- parameters
- variables
- resources
- The three main sections for templates are:
Slide 5 of 11 - The declarative JSON approach is preferred
Better to define the end results, then all the steps
- The Azure resource manager lets you define the end state
- It's a way of expressing to Azure what you want the final outcome to look like
Slide 6 of 11 - Defining the end state
Your deployment consists of two files: parameters file in the template file
- This is demonstrated in detail in the video here: https://bit.ly/bruno-does-linux-data-java
Slide 7 of 11 - It's about the parameters file in the template file
The goals of the Azure resource manager
- You can read more here:
- https://azure.microsoft.com/en-us/documentation/articles/resource-group-overview/
- https://msdn.microsoft.com/en-us/library/azure/dn790568.aspx
- https://azure.microsoft.com/en-us/documentation/articles/powershell-azure-resource-manager/
- https://azure.microsoft.com/en-us/documentation/articles/resource-group-authoring-templates/
- https://github.com/Azure/azure-quickstart-templates will
Slide 8 of 11 - Some simple goals
Infrastructure lives in resource groups and resource groups get deployed to a data center
- Resource groups do not span data centers
Slide 9 of 11 - Deployments end up in a data center
Azure XPlat CLI
- Notice the azure group create command
- You specify the resource group, the region, the deployment name
- More importantly, you pass in the deployment file in the parameters file
Slide 10 of 11 - Azure XPlat CLI
Your deployment ends up in the data center
- There are many global data centers to choose from
- This list is constantly growing and may already be out of date
- You can get an updated list here, https://azure.microsoft.com/en-us/regions/
Slide 11 of 11 - Choosing from one of many global data centers