A continuación, demostraremos cómo Terraform implementa los recursos. Tomando Azure como ejemplo, primero debemos preparar la CLI de Azure. La CLI se puede usar para la autenticación. Terraform en sí no tiene función de autenticación. Cómo determinar si tenemos permiso para continuar La implementación / cambio de recursos depende principalmente de la plataforma en la nube, por lo que primero debemos verificar nuestra identidad antes de implementar y cambiar los recursos de la nube.
La CLI de Azure puede usar el principio del servicio para iniciar sesión, primero podemos crear un SP
$ sp = New-AzADServicePrincipal -Scope / subscriptions / 6dxxxxxxxxxxxxxxxxxx
Puede ver el sp recién creado en el registro de la aplicación
Luego puede autorizar al sp. Primero puede otorgar al sp un permiso de colaborador de grupo de recursos o permiso de suscripción
Luego, puede iniciar sesión en la CLI de Azure. Primero, especifique el entorno de inicio de sesión como China
az cloud set --name AzureChinaCloud
el inicio de sesión
Abra la ventana de inicio de sesión del navegador, ingrese la contraseña para iniciar sesión
Se ha preparado el entorno de nube, y luego se puede escribir código Terraform. Si simplemente crea una máquina virtual, el código terraform será muy simple. En cuanto a los parámetros que se deben especificar al momento de crear una máquina virtual, como el nombre de la máquina virtual, tamaño, etc. Todos podemos definirnos como variables, lo cual es muy similar a otros lenguajes de programación.
Terraform versión 0.13 o superior necesita definir el proveedor de la siguiente manera. El proveedor requerido primero debe definir la versión del proveedor si se usa. Puede ser una versión fija o se puede especificar un rango.
terraform { required_providers { azure = { source = "hashicorp / azurerm" version = "2.14.0" } } }
Lo siguiente es la definición de recursos.
Las definiciones en locales son generalmente constantes reutilizables, que no necesitan ser asignadas como variables durante la implementación, pero pueden usarse directamente
locales { vm_name = "AzureVM" }
El comienzo a continuación es la definición de los recursos de Azure, incluidos los grupos de recursos, las redes virtuales, las tarjetas de red, etc.
recurso "azurerm_resource_group" "main" { nombre = "$ {var.prefix} -resources" location = var.location } recurso "azurerm_virtual_network" "main" { nombre = "$ {var.prefix} -network" address_space = [" 10.0.0.0/16 "] ubicación = azurerm_resource_group.main.location resource_group_name = azurerm_resource_group.main.name subred { name = "" Subnet1 address_prefix = "10.0.2.0/24" security_group = azurerm_network_security_group.example.id } subred { name =" Subred2 " address_prefix = "10.0.3.0/24" security_group = azurerm_network_security_group.example.id } } recurso "azurerm_network_interface" "main" { name = "$ {var.prefix} -nic" resource_group_name = azurerm_resource_group.main.name location = azurerm_resource_group.main.location ip_configuration { name = "internal" subnet_id = elemento (azurerm_network_virt .subnet. *. id, 1) private_ip_address_allocation = "Dynamic" public_ip_address_id = azurerm_public_ip.example.id } } recurso "azurerm_virtual_machine" "principal" { { nombre = "$ {var.prefix} -vm" resource_group_name = azurerm_resource_group.main.name ubicación = azurerm_resource_group.main.location vm_size = "" Standard_DS2_v2 network_interface_ids = [ azurerm_network_interface.main.id ] storage_image_reference { publisher = "MicrosoftWindowsServer" oferta = "WindowsServer" "2016-centro de datos" SKU = version = " último " } storage_os_disk { name =" myosdisk1 " caching =" ReadWrite " create_option =" FromImage " managed_disk_type = "Standard_LRS" } storage_data_disk { name = "DataDisk" caché = "Ninguno" create_option = "vacío" disk_size_gb = 500 lun = 0 managed_disk_type = "Premium_LRS" } os_profile { computer_name = local.vm_name admin_username = var.username contraseña_admin = var.password } os_profile_windows_config { enable_automatic_upgrades = false provision_vm_agent = false } }
Defina el código IAC, primero usamos terraform init para descargar el proveedor requerido, puede ver que se está descargando el proveedor Terraform azurerm
Una vez completada la descarga, intente realizar un plan para ver los cambios que se producirán durante la implementación. Puede ver que hay muchos + en el frente, lo que significa que estos recursos se agregarán. Si se destruye, es posible que vea muchos signos. Además, De hecho, terraform realiza cambios de recursos principalmente basados en el estado en tfstate. Como somos un estado vacío, cualquier recurso creado será juzgado como una nueva adición. Si es un estado existente, primero debemos mirar el estado. Qué hay ahí dentro
A continuación, aplique directamente para crear, ingrese sí para confirmar
Puede ver que los recursos se están creando todo el tiempo, y esta interfaz de salida se siente mucho más amigable que ARM Template
Una vez completada la implementación, inicie sesión en el portal, puede ver que se han creado los recursos