Crear VM-Apache2-con Terraform en Azure[ES]

15435 단어 terraformapacheazure
푸른 우사제세주와 육지에서 국가전력회사의 전력시스템과 인프라는 예측할 수 없는 구름이다.
지형
이것은 플랫폼 개혁으로 대중에게 인프라 시설 건설 과정의 자동화를 실현하는 기능을 제공하였다
Terraform trabaja en torno a estos archivos*.tf*.tfvars y*.tfstate
아치보tf:
이곳은 누베성의 한 곳이다.이것은 복잡한 과정이다.
아치보TFVAR:
이것은 아주 좋은 예다.tf
아치보tfstate:
이것은 지형의 일종이다.미래의 토지 관리와 개발 과정에서 우리는 토지에 대해 재계획을 해야 한다.
Ejempo introductorio crear un recurso:
재귀적 운영 체제:
- 푸른 쿤타

1. Instalar Terraform


Esta herramienta Esta Disposible para Windows、Mac、Linux

2. Instalar el CLI de Azure


Microsoft 설치 소프트웨어(Microsoft Installer)의 공식 문서 적용

Autenticarse en CLI de Azure


우사르 코만도az login구름층의 활동에서 우리는 더 많은 신뢰를 필요로 한다

Crear un directorio


"푸른 지형을 배운다"는 에스테 카소의 이사로 HCL(Hashi Corporation Archivo estaráel código escrito)에서 main.tf을 사용했다.
# Configure the Azure provider
terraform {
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = ">= 2.26"
    }
  }
}

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "rg" {
  name     = "myTFResourceGroup"
  location = "westus2"
}

성명의 중요한 내용은 provider년 《미국 국가인권선언》과 resource년 《절망지역 재발성 질병선언》을 포함한다.

Inicializar terraform


공사 설계 본사(Dentro del proyecto ejecutar el comando) terraform init 건축 구조도

Generar el plan de ejecución


유럽 공동체 terraform plan호 결의는 각 회원국의 이익을 확보하기 위한 계획을 통과시켰다

Aplicar la configuracion


우리는 계획을 수정하였는데, 수정된 공사는 terraform apply년에 완공되고, 공사는 yes년에 완공되며, 공사는 terraform destroy년에 완공될 것이다

Inspeccionar el estado
Ver el grupo de recursos que se han creado mediante terraform
terraform show

Ver en la consola de la nube de Azure



Destruir el recurso


우산도 코만도 yes번 도로에 있는 철도입니다. 이 도로는 도로로 도로교통안전위원회가 관리하고 terraform plan -out=newplan번 도로입니다.


Cambios en la infraestructura


신사레다와 루에고 지역 terraform apply newplan년 신사레다와 루에고 지역의 토지 이용 계획에서 이 지역의 토지 이용 총체적 계획 중 토지 이용률이 가장 높다
세공다 파트
*아파치의 인터넷 서비스에서 가상의 세계가 푸른 하늘에서 운행되고 있다. 이것은 가상의 세계이다*

Crear un archivo variables.tf en que se declara el uso de variables en la creación de los recursos


variable "location" {}

variable "admin_username" {
  type        = string
  description = "Administrator user name for virtual machine"
}

variable "admin_password" {
  type        = string
  description = "Password must meet Azure complexity requirements"
}

variable "prefix" {
  type    = string
  default = "my"
}

variable "tags" {
  type = map

  default = {
    Environment = "Terraform GS"
    Dept        = "Engineering"
  }
}

variable "sku" {
  default = {
    westus2 = "16.04-LTS"
    eastus  = "18.04-LTS"
  }
}


Crear el archivo terraform.tfvars en donde se establecen los valores de las varibles


location       = "xxxxx"
prefix         = "xx"
admin_username = "xxxxx"
admin_password = "xxxxxxxx"

Crear un archivo azure-user-data.sh que tendrá los script iniciales que se ejecutaran en la maquina virtual creada en Azure


#! /bin/bash
sudo apt-get update
sudo apt-get install -y apache2
sudo systemctl start apache2
sudo systemctl enable apache2
echo "<h1>Demp Apache2 from Azure Virtual Machine</h1>" | sudo tee /var/www/html/index.html

Las siguientes configuraciones se realizaran en el archivo main.tf


Agregar una regla de red que habilite el puerto 80
    security_rule {
    name                       = "allow-http"
    description                = "allow-http"
    priority                   = 110
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "80"
    source_address_prefix      = "Internet"
    destination_address_prefix = "*"
  }
델트로 델레소드 레이드
resource "azurerm_network_security_group" "nsg" {
  name                = "myTFNSG"
  location            = "westus2"
  resource_group_name = azurerm_resource_group.rg.name

  security_rule {
    name                       = "SSH"
    priority                   = 1001
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "22"
    source_address_prefix      = "*"
    destination_address_prefix = "*"
  }

    security_rule {
    name                       = "allow-http"
    description                = "allow-http"
    priority                   = 110
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "80"
    source_address_prefix      = "Internet"
    destination_address_prefix = "*"
  }
}

Declarar la data para leer el archivo de configuracion inicial tambien llamado cloud-init


data "template_file" "linux-vm-cloud-init" {
  template = file("azure-user-data.sh")
}

Cargar la data en sistema operativo de la maquina virtual, decodificando el archivo anteriormente declarado


  os_profile {
    computer_name  = "myTFVM-kg"
    admin_username = var.admin_username
    admin_password = var.admin_password
    custom_data = base64encode(data.template_file.linux-vm-cloud-init.rendered)
  }

Configuración completa del archivo main.tf


이것은 vm_size = "Standard_B1s"일의 무료 계약이다

Declarar una salida por consola de la ip de la vm creada


output "public_ip_address" {
  value = data.azurerm_public_ip.ip.ip_address
}

main.tf


# Configure the Azure provider
terraform {
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = ">= 2.26"
    }
  }
}

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "rg" {
  name     = "myTFResourceGroup"
  location = "westus2"

  tags = {
      Environment = "Terraform Getting Started"
      Team = "DevOps"
  }
}

# Create a virtual network
resource "azurerm_virtual_network" "vnet" {
    name                = "myTFVnet"
    address_space       = ["10.0.0.0/16"]
    location            = "westus2"
    resource_group_name = azurerm_resource_group.rg.name
}

# Create subnet
resource "azurerm_subnet" "subnet" {
  name                 = "myTFSubnet"
  resource_group_name  = azurerm_resource_group.rg.name
  virtual_network_name = azurerm_virtual_network.vnet.name
  address_prefixes     = ["10.0.1.0/24"]
}

# Create public IP
resource "azurerm_public_ip" "publicip" {
  name                = "myTFPublicIP"
  location            = "westus2"
  resource_group_name = azurerm_resource_group.rg.name
  allocation_method   = "Static"
}

# Create Network Security Group and rule
resource "azurerm_network_security_group" "nsg" {
  name                = "myTFNSG"
  location            = "westus2"
  resource_group_name = azurerm_resource_group.rg.name

  security_rule {
    name                       = "SSH"
    priority                   = 1001
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "22"
    source_address_prefix      = "*"
    destination_address_prefix = "*"
  }

    security_rule {
    name                       = "allow-http"
    description                = "allow-http"
    priority                   = 110
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "80"
    source_address_prefix      = "Internet"
    destination_address_prefix = "*"
  }
}

# Create network interface
resource "azurerm_network_interface" "nic" {
  name                      = "myNIC"
  location                  = "westus2"
  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.publicip.id
  }
}

data "template_file" "linux-vm-cloud-init" {
  template = file("azure-user-data.sh")
}

# Create a Linux virtual machine
resource "azurerm_virtual_machine" "vm" {
  name                  = "myTFVM"
  location              = "westus2"
  resource_group_name   = azurerm_resource_group.rg.name
  network_interface_ids = [azurerm_network_interface.nic.id]
  vm_size               = "Standard_B1s"


  storage_os_disk {
    name              = "myOsDisk"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Premium_LRS"
  }

  storage_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = lookup(var.sku, var.location)
    version   = "latest"
  }

  os_profile {
    computer_name  = "myTFVM-kg"
    admin_username = var.admin_username
    admin_password = var.admin_password
    custom_data = base64encode(data.template_file.linux-vm-cloud-init.rendered)
  }

  os_profile_linux_config {
    disable_password_authentication = false
  }
}

data "azurerm_public_ip" "ip" {
  name                = azurerm_public_ip.publicip.name
  resource_group_name = azurerm_virtual_machine.vm.resource_group_name
  depends_on          = [azurerm_virtual_machine.vm]
}

output "public_ip_address" {
  value = data.azurerm_public_ip.ip.ip_address
}


*아치워스 호텔*

에제크타terraform planterraform apply - 네.


이것은 네트워크 서비스 플랫폼이다. 그것은 소형 서비스 플랫폼이다👏🏼👏🏼terraform destroy이것은 매우 좋은 예이다
분당 서비스 사이트가 하나 있는데, 그것은 작은 식당이다

Almacenar el estado remoto en Terraform Cloud


백엔드에서 지형 허가증과 지형 이용률을 제거하고estado 데이터와 비교했다.인프라 시설을 건설하는 칸비오스에서 우리는 지형운에 대해 백엔드 개조를 해서 설비의 버전화, 감사와 협력을 실현해야 한다.

Registrarse en Terraform Cloud

Configurar el backend remoto


terraform {
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = ">= 2.26"
    }
  }

+ backend "remote" {
+   organization = "<ORG_NAME>"
+   workspaces {
+     name = "Example-Workspace"
+   }
+ }
}

provider "azurerm" {
  features {}
}

Iniciar sesion en local terraform login

Ver la cuenta de azure iniciadoaz account list

Ver informacion necesaria de la cuenta de azureaz account set --subscription="SUBSCRIPTION_ID"

Copiar las ID en la cloud de terraform


az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/SUBSCRIPTION_ID"

Aplicar las configuraciones terraform apply



Destruir los recursos creados terraform destroy


지형운은 비교할 수 있고 확정할 수 있는 지형운으로 그 형상과 형상은 지형과 비슷하다.
지형운보험정산사는 현지 지형의 생태 환경에 보호를 제공할 수 있는데 그 기능은 생태 환경을 보호하는 것을 포함한다.

좋은 웹페이지 즐겨찾기