Salut !
Comme j’ai pu vous en parler dans ce blog post : Terraform est désormais inclus dans Azure Cloud Shell. Nous allons désormais en profiter afin de déployer une machine Ubuntu avec Terraform.
- Article : Introduction à Terraform avec Azure
Etape 1: Lancer Azure Cloud Shell (Bash)
Etape 2: Localiser le binaire Terraform
which terraform
Etape 3: Créer un module Terraform
vi main.tf
Etape 3.1: Créer un resource group
resource "azurerm_resource_group" "test" { name = "acctestrg" location = "West US 2" }
Etape 3.2: Créer un réseau virtual avec une adresse IP publique
resource "azurerm_virtual_network" "test" { name = "acctvn" address_space = ["10.0.0.0/16"] location = "${azurerm_resource_group.test.location}" resource_group_name = "${azurerm_resource_group.test.name}" } resource "azurerm_public_ip" "test" { name = "pubip" location = "${azurerm_resource_group.test.location}" resource_group_name = "${azurerm_resource_group.test.name}" public_ip_address_allocation = "Dynamic" idle_timeout_in_minutes = 30 tags { environment = "test" } } resource "azurerm_network_interface" "test" { name = "acctni" location = "West US 2" resource_group_name = "${azurerm_resource_group.test.name}" ip_configuration { name = "testconfiguration1" subnet_id = "${azurerm_subnet.test.id}" private_ip_address_allocation = "static" private_ip_address = "10.0.2.5" public_ip_address_id = "${azurerm_public_ip.test.id}" } }
Etape 3.3: Créer un « Managed Disk »
resource "azurerm_managed_disk" "test" { name = "datadisk_existing" location = "West US 2" resource_group_name = "${azurerm_resource_group.test.name}" storage_account_type = "Standard_LRS" create_option = "Empty" disk_size_gb = "1023" }
Etape 3.4: Création de la VM: Ubuntu
resource "azurerm_virtual_machine" "test" { name = "acctvm" location = "West US 2" resource_group_name = "${azurerm_resource_group.test.name}" network_interface_ids = ["${azurerm_network_interface.test.id}"] vm_size = "Standard_DS1_v2" storage_image_reference { publisher = "Canonical" offer = "UbuntuServer" sku = "16.04-LTS" version = "latest" } storage_os_disk { name = "myosdisk1" caching = "ReadWrite" create_option = "FromImage" managed_disk_type = "Standard_LRS" } # Optional data disks storage_data_disk { name = "datadisk_new" managed_disk_type = "Standard_LRS" create_option = "Empty" lun = 0 disk_size_gb = "1023" } storage_data_disk { name = "${azurerm_managed_disk.test.name}" managed_disk_id = "${azurerm_managed_disk.test.id}" create_option = "Attach" lun = 1 disk_size_gb = "${azurerm_managed_disk.test.disk_size_gb}" } os_profile { computer_name = "hostname" admin_username = "qcazureadmin" admin_password = "QuebecMeetupAzure!" } os_profile_linux_config { disable_password_authentication = false } tags { environment = "demomeetupazure" } } data "azurerm_public_ip" "test" { name = "${azurerm_public_ip.test.name}" resource_group_name = "${azurerm_resource_group.test.name}" depends_on = ["azurerm_virtual_machine.test"] } output "ip_address" { value = "${data.azurerm_public_ip.test.ip_address}" }
Etape 4: Terraform init
Etape 5: Terraform plan
Etape 6: Terraform apply
Etape 7 : SSH sur la machine déployée
Ressources:
- Automatiser votre infrastructure Azure avec Terraform : http://zigmax.net/azure-avec-terraform/
- Terraform Azure ARM documentation : https://www.terraform.io/docs/providers/azurerm/r/virtual_machine.html
- HashiCorp Terraform : https://www.terraform.io/