Avant-Propos
Ansible, proposé par Red Hat, est largement adopté pour l’orchestration et le déploiement dans le monde de l’Open Source. En préparation des démonstrations pour le MS Cloud Summit, Stanislas Quastana et moi avons exploré l’utilisation d’Ansible et Terraform pour déployer des services dans Azure. Retrouvez les détails de notre session “Infrastructures dans Azure : C’est comme du lego” : ici.
Ansible
Ansible sert à gérer les configurations. Plutôt que de répéter ce que de nombreux tutoriels couvrent déjà, je vous propose de consulter les ressources disponibles via Bing ou Google. Cependant, configurer Ansible pour Azure peut s’avérer complexe. J’ai opté pour une installation d’Ansible sur une VM Azure déployée via Terraform. Consultez un exemple dans mon repo Azure sur GitHub pour déployer une VM Ubuntu 16.04-LTS prête à l’emploi.
Installation de dépendances
Mettez à jour votre système et installez les dépendances nécessaires, y compris Python :
sudo apt-get update
sudo apt-get install software-properties-common
sudo apt-get install libffi-dev libssl-dev
Installation de Ansible
Ajoutez le PPA Ansible et installez Ansible ainsi que quelques outils supplémentaires :
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible sshpass git
Installation des prérequis pour Azure
Utilisez pip pour installer les composants nécessaires à la gestion d’Azure :
sudo apt-get install python-pip
sudo pip install --upgrade pip
sudo pip install urllib3 --upgrade
sudo pip install msrest==0.4.4
sudo pip install msrestazure==0.4.4
sudo pip install azure==2.0.0rc5
Configuration de Ansible (a minima)
Sauvegardez et configurez ansible.cfg
et le fichier hosts pour inclure la machine locale :
mv /etc/ansible/ansible.cfg /etc/ansible/ansible.cfg.backup
printf "[defaults]\nhost_key_checking = False\n\n" >> /etc/ansible/ansible.cfg
echo '[ssh_connection]\ncontrol_path = ~/.ssh/ansible-%%h-%%r' >> /etc/ansible/ansible.cfg
echo "\nscp_if_ssh=True" >> /etc/ansible/ansible.cfg
echo "localhost" > /etc/ansible/hosts
Azure
Préparez votre environnement pour les scripts d’inventaire Ansible et téléchargez le module azure_rm.py
:
mkdir -p /opt/azure/playbook
mkdir -p /opt/azure/inventory
mkdir -p ~/azure
cd /opt/azure/inventory
wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/azure_rm.py
wget https://raw.githubusercontent.com/
ansible/ansible/devel/contrib/inventory/azure_rm.ini
chmod +x /opt/azure/inventory/azure_rm.py
Configurez un Service Principal pour Ansible dans Azure et créez un fichier .credentials
avec vos informations d’identification :
cd ~/azure/
touch .credentials
echo "[default]" > .credentials
echo "subscription_id=YOUR-SUBID" >> .credentials
echo "client_id=YOUR-ClientID" >> .credentials
echo "secret=YOUR-SECRET" >> .credentials
echo "tenant=YOUR-TENANTID" >> .credentials
Le test
Créez un playbook de test pour vérifier votre configuration et lancez-le :
- name: Test the inventory script
hosts: azure
connection: local
gather_facts: no
tasks:
- debug: msg="{{ inventory_hostname }} has powerstate {{ powerstate }}"
Enregistrez-le sous /opt/azure/playbook/test.yml
et exécutez-le :
ansible-playbook -i /opt/azure/inventory/azure_rm.py /opt/azure/playbook/test.yml
Vous devriez voir le statut de vos ressources Azure, prouvant que tout est correctement configuré pour le déploiement et la gestion d’Azure avec Ansible.
Cet article vous guide à travers l’installation et la configuration d’Ansible pour gérer vos ressources Azure, offrant une solution puissante pour l’orchestration de votre infrastructure cloud.