Démarrage : Configurez Ansible sur une VM 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 montre comment installer Ansible sur une VM 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.
- Principal de service Azure : créez un principal de service en notant les valeurs suivantes : appId, displayName, password et tenant.
Créer 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 CentOS85Gen2 \ --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 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
- 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 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
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.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