Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🔧
Debutant 25 min Ansible

Debuter avec Ansible

Pourquoi Ansible ?

Ansible est un outil de gestion et d'automatisation d'applications qui permet aux développeurs et administrateurs systèmes de gérer et de déployer des infrastructures cloud, on-premises ou hybrides. Il est conçu pour simplifier la mise en œuvre de scripts de configuration et de déploiement tout en offrant une sécurité accrue grâce à sa gestion intégrée des autorisations.

Un cas d'usage concret serait le déploiement d'une application web sur plusieurs serveurs, où Ansible peut automatiser l'installation des dépendances, la copie du code source et le redémarrage du service web.

Prerequis

Pour utiliser Ansible, vous aurez besoin de :

  • Python 2.7 ou 3.x
  • Un environnement d'exécution Linux ou macOS (Windows est supporté via WSL)
  • Accès à des machines où vous voulez déployer vos applications

Outils à installer

Vous pouvez installer Ansible en utilisant pip :

## Installer pip si ce n'est pas déjà fait
sudo apt update && sudo apt install python3-pip

## Installer Ansible
pip3 install ansible

Concepts fondamentaux

Inventaire (Inventory)

L'inventaire est un fichier qui définit les hôtes sur lesquels vous souhaitez exécuter vos playbooks. Voici un exemple basique :

## inventaire.ini
[webservers]
web1.example.com
web2.example.com

[databases]
db1.example.com

Playbook (Playbook)

Un playbook est un fichier YAML qui définit les tâches à exécuter sur vos hôtes. Voici un exemple simple :

## playbook.yml
---
- name: Installer Apache sur tous les serveurs web
  hosts: webservers
  tasks:
    - name: Assurer que le paquet Apache est installé
      apt:
        name: apache2
        state: present

Roles (Roles)

Un rôle est une façon de structurer vos playbooks et les réutiliser. Voici comment créer un rôle :

## Créer un nouveau rôle
ansible-galaxy init my_role

## Structure du rôle
my_role/
├── tasks/
│   └── main.yml
├── handlers/
│   └── main.yml
├── files/
├── templates/
├── vars/
└── defaults/

Variables (Variables)

Vous pouvez définir des variables dans les fichiers vars/main.yml ou en ligne de commande. Voici un exemple :

## vars/main.yml
http_port: 80
max_clients: 200

Mise en pratique : projet fil rouge

Projet à réaliser : Un gestionnaire de tâches

Nous allons créer un gestionnaire de tâches simple qui permet d'ajouter, modifier et afficher des tâches.

Étape 1: Créer le rôle task_manager

ansible-galaxy init task_manager

Étape 2: Configurer les fichiers du rôle

tasks/main.yml

## task_manager/tasks/main.yml
- name: Installer Python et pip
  apt:
    name: "item"
    state: present
  loop:
    - python3
    - python3-pip

- name: Installer Flask
  pip:
    name: flask
    state: present

templates/task_manager.py.j2

## task_manager/templates/task_manager.py.j2
from flask import Flask, request, jsonify

app = Flask(__name__)

tasks = []

@app.route('/tasks', methods=['POST'])
def add_task():
    task = request.json
    tasks.append(task)
    return jsonify(task), 201

@app.route('/tasks', methods=['GET'])
def get_tasks():
    return jsonify(tasks)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

handlers/main.yml

## task_manager/handlers/main.yml
- name: Redémarrer l'application Flask
  command: pkill -f task_manager.py
  ignore_errors: yes
  args:
    chdir: /path/to/task_manager

Étape 3: Créer le playbook

playbook.yml

## playbook.yml
---
- name: Déployer le gestionnaire de tâches
  hosts: webservers
  roles:
    - task_manager
  vars:
    http_port: 5000

Étape 4: Exécuter le playbook

ansible-playbook -i inventaire.ini playbook.yml

Erreurs fréquentes et debugging

Erreur : Le fichier task_manager.py ne peut pas être trouvé

Code incorrect :

## playbook.yml
---
- name: Déployer le gestionnaire de tâches
  hosts: webservers
  roles:
    - task_manager

Code correct :

## playbook.yml
---
- name: Déployer le gestionnaire de tâches
  hosts: webservers
  roles:
    - task_manager
  vars:
    http_port: 5000

Erreur : Le service Flask n'est pas démarré

Code incorrect :

## handlers/main.yml
- name: Redémarrer l'application Flask
  command: pkill -f task_manager.py
  ignore_errors: yes
  args:
    chdir: /path/to/task_manager

Code correct :

## handlers/main.yml
- name: Redémarrer l'application Flask
  command: systemctl restart flask_service
  ignore_errors: yes
  args:
    chdir: /path/to/task_manager

Pour aller plus loin

Pistes de connaissance avancées

  1. Ansible Vault : Sécurisez vos variables sensibles en les chiffre.
  2. Gestion des déploiements continus avec Ansible Galaxy : Utilisez des roles officiels pour accélérer le développement.
  3. Utilisation de modules personnalisés : Créez des modules Ansible pour faciliter votre workflow.

Défi pratique

Créer un script Ansible qui permet d'automatiser la mise à jour des paquets sur tous les serveurs définis dans l'inventaire. Assurez-vous que le processus de mise à jour est sécurisé et que les notifications sont envoyées en cas de réussite ou d'échec.

## playbook_update.yml
---
- name: Mettre à jour les paquets sur tous les serveurs
  hosts: all
  tasks:
    - name: Assurer que les paquets sont à jour
      apt:
        update_cache: yes
        upgrade: dist

Exécutez le playbook :

ansible-playbook -i inventaire.ini playbook_update.yml

Ceci devrait vous donner une bonne base pour démarrer avec Ansible et vous aider à automatiser vos tâches de déploiement et de gestion des infrastructures.

Besoin d'aide sur Ansible ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Qu'est-ce que Ansible?
Ansible est un outil d'automatisation open source qui permet la gestion des configurations, le déploiement et la mise à jour des systèmes en utilisant des scripts simples appelés playbooks.
Comment installer Ansible sur mon système?
Pour installer Ansible, vous pouvez utiliser le gestionnaire de paquets de votre système. Par exemple, sur Ubuntu, utilisez la commande `sudo apt update && sudo apt install ansible`. Pour d'autres systèmes, consultez les instructions officielles d'installation.
Quelles sont les principales fonctionnalités d'Ansible?
Les principales fonctionnalités d'Ansible comprennent la gestion des configurations avec des playbooks YAML, l'exécution de tâches uniques sur plusieurs hôtes en parallèle, et le déploiement automatique d'applications.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.