initial commit - deploys successfully
This commit is contained in:
parent
7fbc7d005a
commit
2c1c999a37
|
@ -0,0 +1,8 @@
|
||||||
|
# Deploy a simple Linux VM
|
||||||
|
**ubuntu**
|
||||||
|
|
||||||
|
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 a A1 size VM in the resource group location and return the FQDN of the VM.
|
||||||
|
|
||||||
|
This template takes a minimum amount of parameters and deploys a Linux VM, using the latest patched version.
|
||||||
|
|
||||||
|
Azure requires that an application is added to Azure Active Directory to generate the client_id, client_secret, and tenant_id needed by Terraform (subscription_id can be recovered from your Azure account details). Please go [here](https://www.terraform.io/docs/providers/azurerm/) for full instructions on how to create this.
|
|
@ -0,0 +1,120 @@
|
||||||
|
resource "azurerm_resource_group" "rg" {
|
||||||
|
name = "${var.resource_group}"
|
||||||
|
location = "${var.location}"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_virtual_network" "vnet" {
|
||||||
|
name = "${var.virtual_network_name}"
|
||||||
|
location = "${var.location}"
|
||||||
|
address_space = ["${var.address_space}"]
|
||||||
|
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_subnet" "subnet" {
|
||||||
|
name = "${var.rg_prefix}subnet"
|
||||||
|
virtual_network_name = "${azurerm_virtual_network.vnet.name}"
|
||||||
|
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||||
|
address_prefix = "${var.subnet_prefix}"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_network_interface" "nic" {
|
||||||
|
name = "${var.rg_prefix}nic"
|
||||||
|
location = "${var.location}"
|
||||||
|
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||||
|
|
||||||
|
ip_configuration {
|
||||||
|
name = "${var.rg_prefix}ipconfig"
|
||||||
|
subnet_id = "${azurerm_subnet.subnet.id}"
|
||||||
|
private_ip_address_allocation = "Dynamic"
|
||||||
|
public_ip_address_id = "${azurerm_public_ip.pip.id}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_public_ip" "pip" {
|
||||||
|
name = "${var.rg_prefix}-ip"
|
||||||
|
location = "${var.location}"
|
||||||
|
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||||
|
public_ip_address_allocation = "dynamic"
|
||||||
|
domain_name_label = "${var.dns_name}"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_storage_account" "stor" {
|
||||||
|
name = "${var.hostname}stor"
|
||||||
|
location = "${var.location}"
|
||||||
|
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||||
|
account_type = "${var.storage_account_type}"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_storage_container" "storc" {
|
||||||
|
name = "${var.hostname}-vhds"
|
||||||
|
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||||
|
storage_account_name = "${azurerm_storage_account.stor.name}"
|
||||||
|
container_access_type = "private"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_managed_disk" "disk1" {
|
||||||
|
name = "${var.hostname}-osdisk1"
|
||||||
|
location = "${var.location}"
|
||||||
|
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||||
|
storage_account_type = "Standard_LRS"
|
||||||
|
create_option = "Empty"
|
||||||
|
disk_size_gb = "30"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_managed_disk" "disk2" {
|
||||||
|
name = "${var.hostname}-disk2"
|
||||||
|
location = "${var.location}"
|
||||||
|
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||||
|
storage_account_type = "Standard_LRS"
|
||||||
|
create_option = "Empty"
|
||||||
|
disk_size_gb = "1023"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_virtual_machine" "vm" {
|
||||||
|
name = "${var.rg_prefix}vm"
|
||||||
|
location = "${var.location}"
|
||||||
|
resource_group_name = "${azurerm_resource_group.rg.name}"
|
||||||
|
vm_size = "${var.vm_size}"
|
||||||
|
network_interface_ids = ["${azurerm_network_interface.nic.id}"]
|
||||||
|
|
||||||
|
storage_image_reference {
|
||||||
|
publisher = "${var.image_publisher}"
|
||||||
|
offer = "${var.image_offer}"
|
||||||
|
sku = "${var.image_sku}"
|
||||||
|
version = "${var.image_version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
storage_os_disk {
|
||||||
|
name = "${var.hostname}-osdisk1"
|
||||||
|
vhd_uri = "${azurerm_storage_account.stor.primary_blob_endpoint}${azurerm_storage_container.storc.name}/${var.hostname}-osdisk1.vhd"
|
||||||
|
caching = "ReadWrite"
|
||||||
|
create_option = "FromImage"
|
||||||
|
}
|
||||||
|
|
||||||
|
storage_data_disk {
|
||||||
|
name = "${var.hostname}-disk2"
|
||||||
|
vhd_uri = "${azurerm_storage_account.stor.primary_blob_endpoint}${azurerm_storage_container.storc.name}/${var.hostname}-disk2.vhd"
|
||||||
|
disk_size_gb = "1023"
|
||||||
|
create_option = "Empty"
|
||||||
|
lun = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
os_profile {
|
||||||
|
computer_name = "${var.hostname}"
|
||||||
|
admin_username = "${var.admin_username}"
|
||||||
|
admin_password = "${var.admin_password}"
|
||||||
|
}
|
||||||
|
|
||||||
|
boot_diagnostics {
|
||||||
|
enabled = "true"
|
||||||
|
storage_uri = "${azurerm_storage_account.stor.primary_blob_endpoint}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output "hostname" {
|
||||||
|
value = "${var.hostname}"
|
||||||
|
}
|
||||||
|
|
||||||
|
output "vm_fqdn" {
|
||||||
|
value = "${azurerm_public_ip.pip.fqdn}"
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
variable "resource_group" {
|
||||||
|
description = "The name of the resource group in which to create the virtual network."
|
||||||
|
default = "myresourcegroup"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "rg_prefix" {
|
||||||
|
description = "The shortened abbreviation to represent your resource group that will go on the front of some resources."
|
||||||
|
default = "rg"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "location" {
|
||||||
|
description = "The location/region where the virtual network is created. Changing this forces a new resource to be created."
|
||||||
|
default = "southcentralus"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "virtual_network_name" {
|
||||||
|
description = "The name for the virtual network."
|
||||||
|
default = "vnet"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "address_space" {
|
||||||
|
description = "The address space that is used by the virtual network. You can supply more than one address space. Changing this forces a new resource to be created."
|
||||||
|
default = "10.0.0.0/16"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "subnet_prefix" {
|
||||||
|
description = "The address prefix to use for the subnet."
|
||||||
|
default = "10.0.10.0/24"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "storage_account_type" {
|
||||||
|
description = "Specifies the name of the storage account. Changing this forces a new resource to be created. This must be unique across the entire Azure service, not just within the resource group."
|
||||||
|
default = "Standard_LRS"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "vm_size" {
|
||||||
|
description = "Specifies the name of the virtual machine resource. Changing this forces a new resource to be created."
|
||||||
|
default = "Standard_A0"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "image_publisher" {
|
||||||
|
description = "name of the publisher of the image (az vm image list)"
|
||||||
|
default = "Canonical"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "image_offer" {
|
||||||
|
description = "the name of the offer (az vm image list)"
|
||||||
|
default = "UbuntuServer"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "image_sku" {
|
||||||
|
description = "image sku to apply (az vm image list)"
|
||||||
|
default = "16.04-LTS"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "image_version" {
|
||||||
|
description = "version of the image to apply (az vm image list)"
|
||||||
|
default = "latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "hostname" {
|
||||||
|
description = "VM name referenced also in storage-related names."
|
||||||
|
default = "myvm"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "dns_name" {
|
||||||
|
description = " Label for the Domain Name. Will be used to make up the FQDN. If a domain name label is specified, an A DNS record is created for the public IP in the Microsoft Azure DNS system."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "admin_username" {
|
||||||
|
description = "administrator user name"
|
||||||
|
default = "vmadmin"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "admin_password" {
|
||||||
|
description = "administrator password (recommended to disable password auth)"
|
||||||
|
default = "T3rr@f0rmP@ssword"
|
||||||
|
}
|
Loading…
Reference in New Issue