Démarrage : Configurez Ansible sur une VM Azure
Cet article montre comment installer Ansible sur une machine virtuelle Ubuntu dans Azure.
Dans cet article, vous apprendrez comment :
- Créer un groupe de ressources
- Créer une machine virtuelle Ubuntu
- 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.
- Principal de service Azure : créez un principal de service en notant les valeurs suivantes : appId, displayName, password et tenant.
Création d'une machine virtuelle
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.Créez la machine virtuelle Azure pour Ansible.
az vm create \ --resource-group QuickstartAnsible-rg \ --name QuickstartAnsible-vm \ --image Ubuntu2204 \ --admin-username azureuser \ --admin-password <password>
Remplacez
<password>
par votre mot de passe.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 avec azure.azcollection
Exécutez les commandes suivantes pour configurer Ansible sur 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
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
- L’ID de l’application du principal du service et le secret
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
- Option 2 : Définir des variables d’environnement Ansible
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.
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
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>
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 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
Enregistrez le code suivant en tant que
create_rg.yml
.Ansible 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.Exécutez le playbook en utilisant ansible-playbook.
ansible-playbook create_rg.yml
Découvrez-en plus sur azure.azcollection.
Nettoyer les ressources
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
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 sectiondebug
du playbook, les résultats s’affichent quand la commande se termine.
- En raison de la variable