112 lines
4.1 KiB
Terraform
112 lines
4.1 KiB
Terraform
# declare azurerm provider
|
|
# cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
|
|
provider "azurerm" {
|
|
features {}
|
|
}
|
|
|
|
# create a resource group
|
|
#cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group
|
|
resource "azurerm_resource_group" "rg" {
|
|
name = "myResourceGroup"
|
|
location = "westeurope"
|
|
}
|
|
|
|
# create a storage account
|
|
# cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_account
|
|
resource "azurerm_storage_account" "sa" {
|
|
name = "mystorageaccount"
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
location = azurerm_resource_group.rg.location
|
|
account_tier = "Standard"
|
|
account_replication_type = "LRS"
|
|
}
|
|
|
|
# create a container in the storage account
|
|
# cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_container
|
|
resource "azurerm_storage_container" "sc" {
|
|
name = "mycontainer"
|
|
storage_account_name = azurerm_storage_account.sa.name
|
|
container_access_type = "private"
|
|
}
|
|
|
|
# create a managed disk
|
|
# cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/managed_disk
|
|
resource "azurerm_managed_disk" "md" {
|
|
name = "myManagedDisk"
|
|
location = azurerm_resource_group.rg.location
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
storage_account_type = "Standard_LRS"
|
|
create_option = "Empty"
|
|
disk_size_gb = 1
|
|
}
|
|
|
|
# create a public IP address
|
|
# cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/public_ip
|
|
resource "azurerm_public_ip" "pip" {
|
|
name = "myPublicIP"
|
|
location = azurerm_resource_group.rg.location
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
allocation_method = "Dynamic"
|
|
}
|
|
|
|
# create a network interface
|
|
# cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/network_interface
|
|
resource "azurerm_network_interface" "nic" {
|
|
name = "myNIC"
|
|
location = azurerm_resource_group.rg.location
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
|
|
ip_configuration {
|
|
name = "myNICConfg"
|
|
subnet_id = azurerm_subnet.subnet.id
|
|
private_ip_address_allocation = "Dynamic"
|
|
public_ip_address_id = azurerm_public_ip.pip.id
|
|
}
|
|
}
|
|
|
|
# create a S1 service plan
|
|
# cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/app_service_plan
|
|
resource "azurerm_app_service_plan" "asp" {
|
|
name = "myAppServicePlan"
|
|
location = azurerm_resource_group.rg.location
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
kind = "Linux"
|
|
reserved = true
|
|
|
|
sku {
|
|
tier = "Standard"
|
|
size = "S1"
|
|
}
|
|
}
|
|
|
|
# create a app service
|
|
# cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/app_service
|
|
resource "azurerm_app_service" "as" {
|
|
name = "myAppService"
|
|
location = azurerm_resource_group.rg.location
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
app_service_plan_id = azurerm_app_service_plan.asp.id
|
|
site_config {
|
|
linux_fx_version = "DOCKER|nginx"
|
|
}
|
|
}
|
|
|
|
# create storage account
|
|
# cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_account
|
|
resource "azurerm_storage_account" "sa" {
|
|
name = "mystorageaccount"
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
location = azurerm_resource_group.rg.location
|
|
account_tier = "Standard"
|
|
account_replication_type = "LRS"
|
|
}
|
|
|
|
|
|
# create a virtual network
|
|
# cf. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/virtual_network
|
|
resource "azurerm_virtual_network" "vnet" {
|
|
name = "myVnet"
|
|
address_space = ["10.12.1.0/24"] # CIDR block
|
|
location = azurerm_resource_group.rg.location
|
|
resource_group_name = azurerm_resource_group.rg.name
|
|
} |