Εικονικό δίκτυο 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, μας δίνεται ο σύνδεσμος μόλις ξεκινήσει το σχέδιο και μόλις ξεκινήσει η εφαρμογή:
Ενώ το teraform περιμένει την είσοδο χρήστη Ναι, η κονσόλα cloud μπορεί επίσης να απορρίψει ή να αποδεχτεί την εφαρμογή εκτέλεσης:
Σε λίγα λεπτά μπορούμε να δούμε το περιβάλλον μας έτοιμο να λειτουργήσει! Στο παράδειγμά μας
Τώρα μπορούμε να διαγράψουμε όλους τους φακέλους που δημιούργησε το terraform, μεταξύ αυτών είναι το αρχείο κατάστασης, ένα standstill, ένα πλαίσιο της τρέχουσας διαμόρφωσης, το οποίο μπορεί να έχει εκδόσεις και μπορούμε να το αναπτύξουμε ξανά ως έχει. Το αρχείο κατάστασης αποθηκεύεται πλέον μόνο στο Terraform Cloud, μπορούμε να μεταβούμε στις καταστάσεις από το μενού χώρου εργασίας:
Μπορούμε επίσης να κατεβάσουμε το αρχείο κατάστασης και κάνοντας κύλιση προς τα κάτω μπορούμε να δούμε αν υπάρχουν αλλαγές από παλαιότερες εκτελέσεις.
Και αυτό είναι!
Χρήσιμοι Σύνδεσμοι :
- Quickstart: Install and Configure Terraform | Microsoft Docs
- https://www.terraform.io/cloud-docs
- Authenticate Terraform to Azure | Microsoft Docs
- Backend Type: azurerm | Terraform by HashiCorp
- What is Infrastructure as Code? – Azure DevOps | Microsoft Docs
Pingback: Synapse Analytics deployment with Terrafrom Cloud – CloudBlogger@2022