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

Precaución

En este artículo se hace referencia a CentOS, una distribución de Linux que está cerca de su estado Final de ciclo vida (EOL). Tenga en cuenta su uso y planifique en consecuencia. Para obtener más información, consulte la Guía de fin de ciclo de vida de CentOS.

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

En este artículo aprenderá a:

  • Crear un grupo de recursos
  • Creación de una máquina virtual CentOS
  • 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.

Crear 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 CentOS85Gen2 \
    --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 2.9 con el módulo azure_rm

Ejecute los siguientes comandos para configurar Ansible 2.9 en Centos:

#!/bin/bash

# Update all packages that have available updates.
sudo yum update -y

# Install Python 3 and pip.
sudo yum install -y python3-pip

# Upgrade pip3.
sudo pip3 install --upgrade pip

# Install Ansible.
pip3 install "ansible==2.9.17"

# Install Ansible azure_rm module for interacting with Azure.
pip3 install ansible[azure]

Ansible 2.10 con azure.azcollection

Ejecute los siguientes comandos para configurar Ansible en Centos:

#!/bin/bash

# Update all packages that have available updates.
sudo yum update -y

# Install Python 3 and pip.
sudo yum install -y python3-pip

# Upgrade pip3.
sudo pip3 install --upgrade pip

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

# Install Ansible modules for Azure
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements-azure.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 2.9 with azure_rm module
ansible localhost -m azure_rm_resourcegroup -a "name=ansible-test location=eastus"

#Ansible 2.10 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 2.9 con el módulo azure_rm

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

    Ansible 2.10 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