Skip to content

Instantly share code, notes, and snippets.

@erkanzileli
Created January 30, 2020 08:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save erkanzileli/6e686a26e1afaeb7debfe6f4baf2da8d to your computer and use it in GitHub Desktop.
Save erkanzileli/6e686a26e1afaeb7debfe6f4baf2da8d to your computer and use it in GitHub Desktop.
Example Azure Virtual Machine infra
provider "azurerm" {
version = "=1.38.0"
# subscription_id = "***"
skip_provider_registration = true
}
variable "prefix" {
default = "application"
}
locals {
resource_group = "your-resource-group"
location = "centralus"
}
# resource "azurerm_resource_group" "MyResourceGroup" {
# name = "MyResourceGroup"
# location = "westeurope"
# }
resource "azurerm_container_registry" "acr" {
name = "application"
resource_group_name = "${local.resource_group}"
location = "${local.location}"
sku = "Basic"
}
resource "azurerm_public_ip" "applicationPublicIP" {
name = "applicationPublicIP"
location = "${local.location}"
resource_group_name = "${local.resource_group}"
allocation_method = "Dynamic"
}
resource "azurerm_virtual_network" "applicationVirtualNetwork" {
name = "${var.prefix}-network"
address_space = ["10.0.0.0/16"]
location = "${local.location}"
resource_group_name = "${local.resource_group}"
}
resource "azurerm_subnet" "applicationSubnet" {
name = "applicationSubnet"
resource_group_name = "${local.resource_group}"
virtual_network_name = "${azurerm_virtual_network.applicationVirtualNetwork.name}"
address_prefix = "10.0.2.0/24"
}
resource "azurerm_network_security_group" "applicationNetworkSecurityGroup" {
name = "applicationNetworkSecurityGroup"
location = "${local.location}"
resource_group_name = "${local.resource_group}"
security_rule {
name = "ALL"
priority = 1001
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "*"
source_address_prefix = "*"
destination_address_prefix = "*"
}
}
resource "azurerm_network_interface" "applicationNIC" {
name = "applicationNIC"
location = "${local.location}"
resource_group_name = "${local.resource_group}"
network_security_group_id = "${azurerm_network_security_group.applicationNetworkSecurityGroup.id}"
ip_configuration {
name = "applicationIpConfiguration"
subnet_id = "${azurerm_subnet.applicationSubnet.id}"
private_ip_address_allocation = "Dynamic"
public_ip_address_id = "${azurerm_public_ip.applicationPublicIP.id}"
}
}
resource "azurerm_virtual_machine" "applicationVM" {
name = "${var.prefix}-vm"
location = "${local.location}"
resource_group_name = "${local.resource_group}"
network_interface_ids = ["${azurerm_network_interface.applicationNIC.id}"]
vm_size = "Standard_DS2_v2"
storage_image_reference {
publisher = "Canonical"
offer = "UbuntuServer"
sku = "18.04-LTS"
version = "latest"
}
storage_os_disk {
name = "${var.prefix}-vm-disk"
caching = "ReadWrite"
create_option = "FromImage"
managed_disk_type = "Standard_LRS"
}
os_profile {
computer_name = "${var.prefix}-vm"
admin_username = "proente"
admin_password = "User1234!"
}
os_profile_linux_config {
disable_password_authentication = false
ssh_keys {
key_data = "${file("~/.ssh/id_rsa.pub")}"
path = "/home/user/.ssh/authorized_keys"
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment