Deploy Azure Resources with Terraform Cloud

Εικονικό δίκτυο VNET και υποδίκτυο SUBNET Azure με NSG και Δείγματα κανόνων ασφαλείας μέσω Terraform Cloud (Δωρεάν Επίπεδο)

Ας ρίξουμε μια ματιά στο IaC, σωστά; ο σκοπός αυτής της ανάρτησης είναι να κατανοήσουμε ότι το IaC μας επιτρέπει να αναπτύσσουμε γρήγορα, ασφαλείς και σε κλίμακα τους πόρους μας κατά απαίτηση, να εκτελούμε τις εργασίες μας και να αφαιρούμε αυτές τις χρεώσιμες μονάδες, διατηρώντας παράλληλα το πρότυπο σε αρχεία Terraform. Οποιαδήποτε εργαλεία του IaC μπορούν να κάνουν το ίδιο, το Terraform χρησιμοποιείται κυρίως για το τμήμα Cloud! Βλέπετε, το state μας, μπορεί να παραμείνει στο Terraform Cloud !

Ας δημιουργήσουμε μια αρχή υπηρεσίας για τον έλεγχο ταυτότητας Terraform σε Azure χρησιμοποιώντας το Cloud Shell:

az ad sp create-for-rbac --name "terra1" --role Contributor --scopes /subscriptions/xxxxxxxxxxxxxxx

Διατηρήστε τις εξαγόμενες τιμές και ανοίξτε το Terraform Cloud

https://app.terraform.io/session

Δημιουργήστε έναν οργανισμό και έναν χώρο εργασίας

Είμαστε συνδεδεμένοι σε έναν Οργανισμό και εδώ έχουμε τους χώρους εργασίας μας. Πριν πάτε οτιδήποτε στις Ρυθμίσεις, τα Tokens API πιστοποιούν ένα διακριτικό χρήστη και το αντιγράφουν. in a txt file.

Δημιουργήστε ένα σύνολο μεταβλητών για τη Συνδρομή Azure και τις τιμές του Service Principal που έχουμε διατηρήσει. Δώστε προσοχή στις ρυθμίσεις μεταβλητής, από την ευαίσθητη τιμή και την κατηγορία.

Take a look the Set can be applied to multiple workspaces.

Εκτός από τα σύνολα μεταβλητών, θα δημιουργήσουμε μεταβλητές στον χώρο εργασίας μας, όπως τοποθεσία ή πρόθεμα:

Τώρα πρέπει να εγκαταστήσουμε το terraform ή να ανοίξουμε το Vscode και να το εγκαταστήσουμε

Install the Azure Terraform Visual Studio Code extension | Microsoft Docs

Δημιουργήστε το παρακάτω αρχείο με το διακριτικό

  • Στα Windows, το αρχείο πρέπει να ονομάζεται terraform.rc και να τοποθετηθεί στον κατάλογο %APPDATA% του σχετικού χρήστη. Η φυσική θέση αυτού του καταλόγου εξαρτάται από την έκδοση των Windows και τη διαμόρφωση του συστήματος. χρησιμοποιήστε το $env:APPDATA στο PowerShell για να βρείτε τη θέση του στο σύστημά σας.
  • On all other systems, the file must be named .terraformrc (note the leading period) and placed directly in the home directory of the relevant user.
credentials "app.terraform.io" {
token = "TokenWeCreated.atlasv1.xxxx"
}
Create your Folder on your Filesystem e.x
c:\hashi\vnetexample
And the files

clouds.tf – Χρησιμοποιείται για την επιλογή Workpsace και Org (μπορεί να έχει οποιοδήποτε όνομα)

terraform {
  cloud {
    organization = "sponsors"

    workspaces {
      name = "azurepass"
    }
  }
}

providers.tf – Το υποχρεωτικό αρχείο παρόχων, μπορεί να περιέχει όλους τους Παρόχους Cloud μας

terraform {

  required_version = ">=1.0"

  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>3.0"
    }
  }
}

provider "azurerm" {
  features {}
}

variables.tf – Εδώ έχουμε το αρχείο μεταβλητών μας, μπορούμε να τις δηλώσουμε και εδώ:

variable "prefix" {
  type        = string
  description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
}

variable "location" {
  type        = string
  description = "Location of the resource group."
}

main.tf – Το βασικό αρχείο διαμόρφωσης για τη συνδρομή σας στο Azure:

resource "azurerm_resource_group" "rsg-az-north1" {
  name     = "${var.prefix}-resource-group"
  location = var.location

  tags = {
    Type = "Development"
  }
}

resource "azurerm_virtual_network" "vnet-north" {
  resource_group_name = azurerm_resource_group.rsg-az-north1.name
  name                = "${var.prefix}-vnet-north"
  location            = var.location

  address_space = [
    "192.168.20.0/24",
  ]
  tags = {
    Type = "Development"
  }
}

resource "azurerm_subnet" "snet-north" {
  resource_group_name  = azurerm_resource_group.rsg-az-north1.name
  virtual_network_name = azurerm_virtual_network.vnet-north.name
  name                 = "${var.prefix}-snet-north"
  address_prefixes     = ["192.168.20.0/26"]
}

resource "azurerm_network_security_group" "nsg-north" {
  resource_group_name = azurerm_resource_group.rsg-az-north1.name
  name                = "nsg-north"
  location            = var.location
  tags = {
    Type = "Development"
  }
}

resource "azurerm_network_security_rule" "rulenet" {
  resource_group_name         = azurerm_resource_group.rsg-az-north1.name
  network_security_group_name = azurerm_network_security_group.nsg-north.name
  source_port_range           = "*"
  source_address_prefix       = "*"
  protocol                    = "Tcp"
  priority                    = "110"
  name                        = "FTP"
  direction                   = "Inbound"
  destination_port_ranges      = "["21","8088"]
  destination_address_prefix  = "*"
  description                 = "Remote Desktop"
  access                      = "Allow"

}

Όταν είμαστε έτοιμοι στη ρίζα του φακέλου μας e.x c:\my\terra-az\ , τρέχουμε στο Bash ή στο Powershell,

terraform init

terraform plan

terraform apply και γράφουμε ναι για να εκτελεστεί η Ανάπτυξη

Η οθόνη μας εμφανίζει όλους τους πόρους που πρόκειται να αναπτυχθούν και μόνο το ναι θα τους αναπτύξει

Επίσης, μπορούμε να παρατηρήσουμε την εκτέλεση από το terraform cloud, μας δίνεται ο σύνδεσμος μόλις ξεκινήσει το σχέδιο και μόλις ξεκινήσει η εφαρμογή:

Η Κονσόλα Cloud εμφανίζει τη φάση Σχεδίου

Ενώ το teraform περιμένει την είσοδο χρήστη Ναι, η κονσόλα cloud μπορεί επίσης να απορρίψει ή να αποδεχτεί την εφαρμογή εκτέλεσης:

Η Κονσόλα Cloud μπορεί επίσης να επιβεβαιώσει ή να απορρίψει την εκτέλεση

Σε λίγα λεπτά μπορούμε να δούμε το περιβάλλον μας έτοιμο να λειτουργήσει! Στο παράδειγμά μας

The Rules are in place
Associated with our Subnet

Τώρα μπορούμε να διαγράψουμε όλους τους φακέλους που δημιούργησε το terraform, μεταξύ αυτών είναι το αρχείο κατάστασης, ένα standstill, ένα πλαίσιο της τρέχουσας διαμόρφωσης, το οποίο μπορεί να έχει εκδόσεις και μπορούμε να το αναπτύξουμε ξανά ως έχει. Το αρχείο κατάστασης αποθηκεύεται πλέον μόνο στο Terraform Cloud, μπορούμε να μεταβούμε στις καταστάσεις από το μενού χώρου εργασίας:

Μπορούμε επίσης να κατεβάσουμε το αρχείο κατάστασης και κάνοντας κύλιση προς τα κάτω μπορούμε να δούμε αν υπάρχουν αλλαγές από παλαιότερες εκτελέσεις.

Και αυτό είναι!

Χρήσιμοι Σύνδεσμοι :

Infrastructure as a Code

Μοιραστείτε το!

1 Comments

  1. Pingback: Synapse Analytics deployment with Terrafrom Cloud – CloudBlogger@2022

Αφήστε το σχόλιο σας