Ejercicio: Creación de un recurso de Azure mediante scripts en Azure PowerShell

Completado

Recuerde el escenario original: creación de máquinas virtuales para probar el software de CRM. Cada vez que hay una nueva compilación disponible, se pone en marcha una nueva máquina virtual para poder probar la experiencia de instalación completa a partir de una imagen limpia. Cuando haya terminado, querrá eliminar la máquina virtual.

Vamos a probar los comandos para crear una máquina virtual.

Creación de una máquina virtual Linux con Azure PowerShell

Como se va a usar el espacio aislado de Azure, no es necesario crear un grupo de recursos. En su lugar, use el grupo de recursos [nombre del grupo de recursos del espacio aislado]. Además, tenga en cuenta las restricciones de ubicación.

Vamos a crear una máquina virtual de Azure con PowerShell.

  1. Use el cmdlet New-AzVm para crear una máquina virtual.

    • Use el grupo de recursos [nombre del grupo de recursos del espacio aislado].

    • Asigne un nombre a la máquina virtual. Normalmente se recomienda usar algo significativo que identifique los fines de la máquina virtual, la ubicación y el número de instancia (si hay más de una). Usamos "testvm-eus-01" para "Probar máquina virtual en el Este de EE. UU., instancia 1". Viene su propio nombre, en función de dónde coloque la máquina virtual.

    • Seleccione una ubicación cercana en la lista siguiente en el espacio aislado de Azure. Si usa Copiar y Pegar, asegúrese de cambiar el valor en el siguiente comando de ejemplo.

      • westus2
      • southcentralus
      • centralus
      • eastus
      • westeurope
      • southeastasia
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • Use "Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest" para la imagen. Esta imagen es Ubuntu Linux.

    • Use el cmdlet Get-Credential y especifique los resultados en el parámetro Credential.

      Importante

      Vea las Preguntas frecuentes sobre máquinas virtuales de Linux para conocer las limitaciones del nombre de usuario y la contraseña. Las contraseñas deben tener entre 12 y 123 caracteres, y deben cumplir tres de estos cuatro requisitos de complejidad:

      • Deben incluir caracteres en minúscula.
      • Deben incluir caracteres en mayúscula.
      • Deben incluir un dígito.
      • Deben incluir un carácter especial (REGEX.MATCH [\W_]).
    • Agregue el parámetro -OpenPorts y pase "22" como el puerto. Este puerto permite usar SSH en la máquina.

    • Cree un nombre de dirección IP pública. Usará este nombre para crear y buscar la dirección IP estática para iniciar sesión en la máquina.

    New-AzVm -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "testvm-eus-01" -Credential (Get-Credential) -Location "eastus" -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest -OpenPorts 22 -PublicIpAddressName "testvm-eus-01"
    

    Sugerencia

    Puede usar el botón Copiar para copiar los comandos en el Portapapeles. Para pegarlos, haga clic con el botón derecho en una nueva línea en el terminal de Cloud Shell y seleccione Pegar, o bien use el método abreviado de teclado Mayús+Insert (⌘+V en macOS).

  2. Cree un nombre de usuario y una contraseña y luego presione Escribir. PowerShell comienza a crear la máquina virtual.

  3. La creación de la máquina virtual tarda unos minutos en completarse. Una vez hecho, puede consultar y asignar el objeto de máquina virtual a una variable ($vm).

    $vm = (Get-AzVM -Name "testvm-eus-01" -ResourceGroupName <rgn>[sandbox resource group name]</rgn>)
    
  4. Consulte el valor para volcar la información sobre la máquina virtual.

    $vm
    

    Debería ver algo parecido a la salida siguiente:

    ResourceGroupName : <rgn>[sandbox resource group name]</rgn>
    Id                : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rgn>[sandbox resource group name]</rgn>/providers/Microsoft.Compute/virtualMachines/testvm-eus-01
    VmId              : 00000000-0000-0000-0000-000000000000
    Name              : testvm-eus-01
    Type              : Microsoft.Compute/virtualMachines
    Location          : eastus
    Tags              : {}
    HardwareProfile   : {VmSize}
    NetworkProfile    : {NetworkInterfaces}
    OSProfile         : {ComputerName, AdminUsername, LinuxConfiguration, Secrets}
    ProvisioningState : Succeeded
    StorageProfile    : {ImageReference, OsDisk, DataDisks}
    
  5. Puede acceder a objetos complejos mediante una notación de punto (.). Por ejemplo, para ver las propiedades del objeto VMSize asociado a la sección HardwareProfile, ejecute el comando siguiente:

    $vm.HardwareProfile
    
  6. También puede obtener información sobre uno de los discos; para ello, ejecute el comando siguiente:

    $vm.StorageProfile.OsDisk
    
  7. Incluso puede pasar el objeto de máquina virtual a otros cmdlets. Por ejemplo, al ejecutar el siguiente comando se mostrarán todos los tamaños disponibles para la máquina virtual:

    $vm | Get-AzVMSize
    
  8. Ahora, ejecute el comando siguiente para obtener la dirección IP pública:

    az vm list-ip-addresses -n testvm-eus-01 -g <rgn>[sandbox resource group name]</rgn>
    
  9. Con la dirección IP, puede conectarse a la máquina virtual con SSH. Por ejemplo, si usó el nombre de usuario bob y la dirección IP fuera 205.22.16.5, la ejecución de este comando conectaría a la máquina Linux:

    ssh bob@205.22.16.5
    

    Cierre la sesión escribiendo exit.

Eliminación de una máquina virtual

Para probar algunos comandos más, vamos a eliminar la máquina virtual. En primer lugar, es necesario apagarlo (escriba Y si se le pide que continúe):

Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

Cuando la máquina virtual se haya detenido, elimine la máquina virtual mediante la ejecución del cmdlet Remove-AzVM (escriba Y si se le pide que continúe):

Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

Ejecute este comando para enumerar todos los recursos del grupo de recursos:

Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Format-Table

Debería ver diferentes recursos (discos, redes virtuales, etc.) que aún existen.

Microsoft.Compute/disks
Microsoft.Network/networkInterfaces
Microsoft.Network/networkSecurityGroups
Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks

El comando Remove-AzVMsolo elimina la máquina virtual. No limpia ninguno de los demás recursos. En este punto, simplemente eliminaríamos el grupo de recursos y nos libraríamos de él. Pero vamos a continuar el ejercicio para limpiar manualmente. Debería ver un patrón en los comandos.

  1. Elimine la interfaz de red:

    $vm | Remove-AzNetworkInterface –Force
    
  2. Elimine los discos administrados del SO:

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk -Force
    
  3. A continuación, elimine la red virtual:

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork -Force
    
  4. Elimine el grupo de seguridad de red:

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup -Force
    
  5. Por último, elimine la IP pública:

    Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName | Remove-AzPublicIpAddress -Force
    

Debemos haber detectado todos los recursos creados. Compruebe el grupo de recursos simplemente para asegurarse. Aquí se han usado muchos comandos manuales, pero un enfoque mejor habría sido escribir un script. Después, se podría reutilizar esta lógica más adelante para crear o eliminar una máquina virtual. Vamos a examinar la creación de scripts con PowerShell.