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.
- Entidad de servicio de Azure: cree una entidad de servicio y tome nota de los siguientes valores: appId, displayName, password y tenant.
Crear una máquina virtual
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.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.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
- Opción 2: Definición de variables de entorno de Ansible
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).
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
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>
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
- Opción 2: escribir y ejecutar un cuaderno de estrategias de Ansible
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
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.Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook create_rg.yml
Más información sobre azure.azcollection.
Limpieza de recursos
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
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óndebug
del cuaderno de estrategias, los resultados se muestran cuando finaliza el comando.
- Debido a la variable
Pasos siguientes
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de