bazhang87 / azure-terraform

Azure terraform sample for IaaS and AKS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

README

Hits

Revised for Terraform AzureRM v2.70.0 with Terraform v1.0.3

Sample architecture

sample architecture

N-Tier architecture service with a jumphost and a NAT instance. NAT instance is used for SNATing outbound from VMs in app-subnet.

Other samples:

Following samples are not tested with latest Terraform.

How to run

Preparation

Download and install terraform: https://www.terraform.io/downloads.html

Update variables such as subscription_id and admin_name in variables.tf

Azure Service principal

Run following command to get a service principal info. Note that if you have multiple subscriptions then you should set right default subscription.

az account set -s <subscription_id>
az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription_id>"

You don't need to create SP if you're using Azure CLI environment, such as Azure Shell. See Authenticating using the Azure CLI for more information

You can also enable MSI to run terraform witout SP on your Azure VM. See Authenticating using managed identities for Azure resources and please refer (MSI documentation)[https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-linux-vm-access-arm] for how to setup MSI.

Run terraform

Initialize first,

terraform init

Then apply terraform

terraform apply

Feature highlight

  1. VM login - ssh public key or password
  2. Disk - OS disk with >30GiB and datadisk
  3. OS image - default or custom image for building custom image, refer packer
  4. Create multiple VMs
  5. Setting LB
  6. NAT Gateway - no more NAT instance
  7. ASG - create and apply ASG
  8. Blob - create blob account and upload a file

For more information, please refer DOC.md

SNAT test

After provisioned, login to one of app vm through jump box and test source ip using following command

curl ipinfo.io

Reference

Azure

Terraform

Tips

About

Azure terraform sample for IaaS and AKS

License:MIT License


Languages

Language:HCL 100.0%