Prise en main : Configurer Ansible sur une machine virtuelle Azure

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils d’aide relatifs à la fin de vie de CentOS.

Cet article explique comment installer Ansible sur une machine virtuelle Centos dans Azure.

Dans cet article, vous apprendrez comment :

  • Créer un groupe de ressources
  • Créer une machine virtuelle CentOS
  • Installer Ansible sur la machine virtuelle
  • Vous connecter à la machine virtuelle via SSH
  • Configurer Ansible sur la machine virtuelle

Prérequis

  • Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Création d'une machine virtuelle

  1. Création d’un groupe de ressources Azure.

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

    Vous devrez peut-être remplacer le paramètre --location par la valeur correspondant à votre environnement.

  2. Créez la machine virtuelle Azure pour Ansible.

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

    Remplacez <password> par votre mot de passe.

  3. Obtenez l’adresse IP publique de la machine virtuelle Azure.

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

Se connecter à votre machine virtuelle via SSH

À l’aide de la commande SSH, connectez-vous à l’adresse IP publique de votre machine virtuelle.

ssh azureuser@<vm_ip_address>

Remplacez <vm_ip_address> par la valeur appropriée retournée dans les commandes précédentes.

Installer Ansible sur la machine virtuelle

Ansible 2.9 avec le module azure_rm

Exécutez les commandes suivantes pour configurer Ansible 2.9 sur 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 avec azure.azcollection

Exécutez les commandes suivantes pour configurer Ansible sur 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

Points essentiels :

  • Le nœud de contrôle Ansible nécessite l’installation de Python 2 (version 2.7) ou de Python 3 (versions 3.5 et ultérieures). Ansible 4.0.0 et ansible-core 2.11 ont une dépendance logicielle vis-à-vis de Python 3.8, mais fonctionnent avec des versions inférieures. Toutefois, Ansible 5.0.0 et ansible-core 2.12 exigent les versions 3.8 et ultérieures.

Créer des informations d’identification Azure

Pour configurer les informations d’identification Ansible, vous avez besoin des informations suivantes :

  • Votre ID d’abonnement Azure et votre ID de locataire
  • ID et secret de l’application du principal de service

Configurez les informations d’identification Ansible à l’aide de l’une des techniques suivantes :

Option 1 : Créer un fichier d’informations d’identification Ansible

Dans cette section, vous créez un fichier d’informations d’identification local pour fournir ces informations à Ansible. Pour des raisons de sécurité, les fichiers d’informations d’identification doivent être utilisés uniquement dans les environnements de développement.

Pour plus d’informations sur la définition des informations d’identification Ansible, consultez Fourniture d’informations d’identification aux modules Azure.

  1. Une fois que vous avez réussi à vous connecter à la machine virtuelle hôte, créez et ouvrez un fichier nommé credentials :

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. Insérez les lignes suivantes dans le fichier. Remplacez les espaces réservés par les valeurs du principal de service.

    [default]
    subscription_id=<subscription_id>
    client_id=<service_principal_app_id>
    secret=<service_principal_password>
    tenant=<service_principal_tenant_id>
    
  3. Enregistrez le fichier et fermez-le.

Option 2 : Définir des variables d’environnement Ansible

Sur la machine virtuelle hôte, exportez les valeurs du principal de service pour configurer vos informations d’identification 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>

Tester l’installation d’Ansible

Vous disposez maintenant d’une machine virtuelle sur laquelle Ansible est installé et configuré.

Cette section montre comment créer un groupe de ressources de test dans votre nouvelle configuration Ansible. Si vous n’avez pas besoin de faire cela, vous pouvez ignorer cette section.

Option 1 : Utiliser une commande Ansible ad hoc

Exécutez la commande Ansible ad hoc suivante pour créer un groupe de ressources :

#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>"

Remplacez <resource_group_name> et <location> par vos valeurs.

Option 2 : Écrire et exécuter un playbook Ansible

  1. Enregistrez le code suivant en tant que create_rg.yml.

    Ansible 2.9 avec module azure_rm

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

    Ansible 2.10 avec azure.azcollection

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

    Remplacez <resource_group_name> et <location> par vos valeurs.

  2. Exécutez le playbook en utilisant ansible-playbook.

    ansible-playbook create_rg.yml
    

Découvrez-en plus sur azure.azcollection.

Nettoyer les ressources

  1. Enregistrez le code suivant en tant que delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Exécutez le playbook en utilisant la commande ansible-playbook. Remplacez l’espace réservé par le nom du groupe de ressources à supprimer. Toutes les ressources du groupe de ressources seront supprimées.

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

    Points essentiels :

    • En raison de la variable register et de la section debug du playbook, les résultats s’affichent quand la commande se termine.

Étapes suivantes