Compartir a través de


Creación de máquinas virtuales Linux en Azure mediante Ansible

En este artículo se presenta un cuaderno de estrategias de Ansible de ejemplo para configurar una máquina virtual Linux.

En este artículo aprenderá a:

  • Creación de un grupo de recursos
  • Creación de una red virtual
  • Crear una dirección IP pública
  • Crear un grupo de seguridad de red
  • Creación de una tarjeta de interfaz de red virtual
  • Creación de una máquina virtual

1. Configuración del entorno

  • Suscripción de Azure: si no tiene una suscripción de Azure, cree una cuenta gratuita antes de comenzar.

2. Creación de un par de claves SSH

  1. Ejecute el siguiente comando. Cuando se le solicite, especifique los archivos que se van a crear en el directorio siguiente: /home/azureuser/.ssh/authorized_keys.

    ssh-keygen -m PEM -t rsa -b 4096
    
  2. Copie el contenido del archivo de clave pública. De forma predeterminada, el archivo de clave pública se denomina id_rsa.pub. El valor es una cadena larga a partir de "ssh-rsa". Necesitará este valor en el paso siguiente.

3. Implementar el cuaderno de estrategias de Ansible

  1. Cree un directorio en el que probar y ejecutar el código de Ansible de ejemplo y convertirlo en el directorio actual.

  2. Cree un archivo llamado main.yml e inserte el siguiente código. Reemplace el <key_data> marcador de posición por el valor de clave pública del paso anterior.

    - name: Create Azure VM
      hosts: localhost
      connection: local
      tasks:
      - name: Create resource group
        azure_rm_resourcegroup:
          name: myResourceGroup
          location: eastus
      - name: Create virtual network
        azure_rm_virtualnetwork:
          resource_group: myResourceGroup
          name: myVnet
          address_prefixes: "10.0.0.0/16"
      - name: Add subnet
        azure_rm_subnet:
          resource_group: myResourceGroup
          name: mySubnet
          address_prefix: "10.0.1.0/24"
          virtual_network: myVnet
      - name: Create public IP address
        azure_rm_publicipaddress:
          resource_group: myResourceGroup
          allocation_method: Static
          name: myPublicIP
        register: output_ip_address
      - name: Public IP of VM
        debug:
          msg: "The public IP is {{ output_ip_address.state.ip_address }}."
      - name: Create Network Security Group that allows SSH
        azure_rm_securitygroup:
          resource_group: myResourceGroup
          name: myNetworkSecurityGroup
          rules:
            - name: SSH
              protocol: Tcp
              destination_port_range: 22
              access: Allow
              priority: 1001
              direction: Inbound
      - name: Create virtual network interface card
        azure_rm_networkinterface:
          resource_group: myResourceGroup
          name: myNIC
          virtual_network: myVnet
          subnet: mySubnet
          public_ip_name: myPublicIP
          security_group: myNetworkSecurityGroup
      - name: Create VM
        azure_rm_virtualmachine:
          resource_group: myResourceGroup
          name: myVM
          vm_size: Standard_DS1_v2
          admin_username: azureuser
          ssh_password_enabled: false
          ssh_public_keys:
            - path: /home/azureuser/.ssh/authorized_keys
              key_data: "<key_data>"
          network_interfaces: myNIC
          image:
            offer: 0001-com-ubuntu-server-jammy
            publisher: Canonical
            sku: 22_04-lts
            version: latest
    

4. Ejecutar el manual de operaciones

Ejecute ansible-playbook para ejecutar el cuaderno de estrategias de Ansible.

ansible-playbook main.yml

5. Comprobación de los resultados

Ejecute az vm list para comprobar que se creó la máquina virtual.

az vm list -d -o table --query "[?name=='myVM']"

6. Conexión a la máquina virtual

Ejecute el comando SSH para conectarse a la nueva máquina virtual Linux. Reemplace el <marcador de posición ip-address> por la dirección IP del paso anterior.

ssh azureuser@<ip_address> -i /home/azureuser/.ssh/authorized_keys/id_rsa

Limpieza de recursos

  1. Guarde el código siguiente como delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Ejecute el cuaderno de estrategias mediante el comando ansible-playbook . Reemplace el marcador de posición por el nombre del grupo de recursos que se va a eliminar. Se eliminarán todos los recursos del grupo de recursos.

    ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
    

    Puntos clave:

    • Debido a la variable register y la sección debug del manual de operaciones, los resultados se muestran cuando finaliza el comando.

Pasos siguientes