Compartir a través de


Creación de una máquina virtual Linux en Azure con 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:

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

1. Configurar su entorno

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

2. Creación de un par de claves SSH

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

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

3. Implementación del cuaderno de estrategias de Ansible

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

  2. Cree un archivo llamado main.yml e inserte el siguiente código. Reemplace el marcador de posición <key_data> por el valor de la 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. Ejecución del cuaderno de estrategias

Para la ejecución del cuaderno de estrategias de Ansible, ejecute el comando ansible-playbook.

ansible-playbook main.yml

5. Verificación de los resultados

Ejecute az vm list para comprobar que se ha creado 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 a la sección debug del cuaderno de estrategias, los resultados se muestran cuando finaliza el comando.

Pasos siguientes