Compartir vía


Comenzar: Configuración de Ansible en una máquina virtual de Azure

En este artículo se muestra cómo instalar Ansible en una máquina virtual Ubuntu en Azure.

En este artículo aprenderá a:

  • Crear un grupo de recursos
  • Creación de una máquina virtual Ubuntu
  • Instalación de Ansible en la máquina virtual
  • Conectarse a la máquina virtual mediante SSH.
  • Configuración de Ansible en la máquina virtual

Requisitos previos

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

Creación de una máquina virtual

  1. Cree un grupo de recursos de Azure.

    az group create --name QuickstartAnsible-rg --location eastus
    

    Es posible que deba reemplazar el parámetro --location por el valor adecuado para su entorno.

  2. Cree la máquina virtual de Azure para Ansible.

    az vm create \
    --resource-group QuickstartAnsible-rg \
    --name QuickstartAnsible-vm \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --admin-password <password>
    

    Reemplace <password> por su contraseña.

  3. Obtenga la dirección IP pública de la máquina virtual de Azure.

    az vm show -d -g QuickstartAnsible-rg -n QuickstartAnsible-vm --query publicIps -o tsv
    

Conexión a la máquina virtual mediante SSH

Use el comando SSH para conectarse a la dirección IP pública de la máquina virtual.

ssh azureuser@<vm_ip_address>

Reemplace <vm_ip_address> por el valor adecuado devuelto en los comandos anteriores.

Instalación de Ansible en la máquina virtual

Ansible con azure.azcollection

Ejecute los siguientes comandos para configurar Ansible en Ubuntu:

#!/bin/bash

sudo apt update

sudo apt install software-properties-common

sudo add-apt-repository --yes --update ppa:ansible/ansible

sudo apt install ansible

# Install Ansible az collection for interacting with Azure. (optional)
ansible-galaxy collection install azure.azcollection --force 

# Install Ansible modules for Azure (optional)
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements.txt

Puntos clave:

  • El nodo de control de Ansible requiere Python 2 (versión 2.7) o Python 3 (versiones 3.5 y posteriores) instalado. Ansible 4.0.0 y ansible-core 2.11 tienen una dependencia flexible de Python 3.8, pero funcionan con versiones inferiores. Sin embargo, Ansible 5.0.0 y ansible-core 2.12 requerirán la versión 3.8 y versiones más recientes.

Creación de credenciales de Azure

Para configurar las credenciales de Ansible, necesita la siguiente información:

  • El identificador de la suscripción a Azure y del inquilino
  • El identificador y el secreto de la aplicación de la entidad de servicio.

Configure las credenciales de Ansible con una de las técnicas siguientes:

Opción 1: Creación de un archivo de credenciales de Ansible

En esta sección, creará un archivo de credenciales local para proporcionar credenciales a Ansible. Por motivos de seguridad, los archivos de credenciales solo se deben usar en entornos de desarrollo.

Para obtener más información sobre cómo definir las credenciales de Ansible, consulte Providing Credentials to Azure Modules (Provisión de credenciales a módulos de Azure).

  1. Una vez que se haya conectado correctamente a la máquina virtual del host, cree y abra un archivo llamado credentials:

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. Inserte las líneas siguientes al archivo. Reemplace los marcadores de posición por los valores de la entidad de servicio.

    [default]
    subscription_id=<subscription_id>
    client_id=<service_principal_app_id>
    secret=<service_principal_password>
    tenant=<service_principal_tenant_id>
    
  3. Guarde y cierre el archivo.

Opción 2: Definición de variables de entorno de Ansible

En la máquina virtual del host, exporte los valores de la entidad de servicio para configurar las credenciales de Ansible.

export AZURE_SUBSCRIPTION_ID=<subscription_id>
export AZURE_CLIENT_ID=<service_principal_app_id>
export AZURE_SECRET=<service_principal_password>
export AZURE_TENANT=<service_principal_tenant_id>

Prueba de la instalación de Ansible

Ahora tiene una máquina virtual con Ansible instalado y configurado.

En esta sección se muestra cómo crear un grupo de recursos de prueba dentro de la nueva configuración de Ansible. Si no necesita hacerlo, puede omitir esta sección.

Opción 1: usar un comando ad hoc de Ansible

Ejecute el siguiente comando ad hoc de Ansible para crear un grupo de recursos:


#Ansible with azure.azcollection
ansible localhost -m azure.azcollection.azure_rm_resourcegroup -a "name=<resource_group_name> location=<location>"

Reemplace <resource_group_name> y <location> con sus valores.

Opción 2: escribir y ejecutar un cuaderno de estrategias de Ansible

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

    Ansible con azure.azcollection

    - hosts: localhost
      connection: local
      collections:
        - azure.azcollection
      tasks:
        - name: Creating resource group
          azure_rm_resourcegroup:
            name: "<resource_group_name"
            location: "<location>"
    

    Reemplace <resource_group_name> y <location> con sus valores.

  2. Ejecute el cuaderno de estrategias mediante ansible-playbook.

    ansible-playbook create_rg.yml
    

Más información sobre azure.azcollection.

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