Projet Ansible

1. Projet Ansible

Ansible est une plate-forme logicielle pour la configuration et la gestion des ordinateurs. Le logiciel combine le déploiement de logiciels multi-noeuds, l’exécution des tâches ad-hoc, et la gestion des configurations.

Il gère les différents noeuds avec un accès à distance natif (tels que les protocoles SSH ou Remote PowerShell ou encore des APIs natives) et ne nécessite l’installation d’aucun logiciel supplémentaire à distance, avec parallélisation, collecte de métadonnées et gestion des états. Cet aspect de conception “sans agent” installé sur le périphérique est important car il réduit les besoins d’infrastructure pour démarrer une gestion. Les modules fonctionnent grâce à JSON et à la sortie standard et peuvent être écrits dans n’importe quel langage de programmation.

Le système utilise notamment YAML pour exprimer des descriptions réutilisables de systèmes, il fournit des sorties en JSON, il traite les variables grâce à des modèles Jinja2.

Le logiciel Ansible a été conçu par un ancien employé Red Hat, Michael DeHaan, également auteur de l’application de serveur de “provisionning” Cobbler et co-auteur du framework Func pour l’administration à distance. Le code source du logiciel est sous licence GNU General Public v3.0. Red Hat a racheté la société Ansible, Inc. en octobre 2015. 1

2. Le terme Ansible

Une “ansible” est un dispositif théorique permettant de réaliser des communications à une vitesse supraluminique (supérieure à la vitesse de la lumière) imaginé en 1966 par Ursula K. Le Guin dans son roman de science-fiction, Le Monde de Rocannon. Elle en détaillera plus tard le concept dans Les Dépossédés (1974). L’idée est notamment reprise par d’autres auteurs de livres de science-fiction et des jeux vidéos, la communication étant basée sur l’état d’énergie réciproque de deux particules jumelles. Par ailleurs, Ansible est le titre d’un magazine anglo-saxon consacré à la science-fiction. Enfin, le terme “ansible” peut faire référence à un système de communication hyperspace instantané fictif 2.

3. Version d’Ansible

Ansible est développé et publié avec un cycle de révision de 4 mois. Ce cycle peut être étendu afin de permettre la mise en oeuvre de modifications et de test correctifs. Ansible a une structure de support graduelle qui s’étend à trois versions principales.

https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html

Pour obtenir la dernière version d’Ansible :

curl -s https://releases.ansible.com/ansible/ansible-latest.tar.gz.sha | awk '{ print $2 }' | sed 's/\.tar.*//'

4. Objectifs de conception de Ansible

Les objectifs de conception de Ansible comprennent3 :

  • Le minimum par nature. Les systèmes de gestion ne devraient pas imposer des dépendances supplémentaires sur l’environnement.
  • La cohérence. cf. notion de test unitaire (procédure permettant de vérifier le bon fonctionnement d’une partie précise d’un logiciel ou d’une portion d’un programme).
  • La sécurité. Ansible ne déploie pas des agents sur les noeuds. Seulement OpenSSH est nécessaire.
  • La fiabilité. Lorsqu’il est écrit soigneusement, un livre de jeux Ansible peut être idempotent afin d’éviter des effets secondaires inattendus sur les systèmes gérés.
  • Une courbe d’apprentissage faible. Les livres de jeux Ansible utilisent un langage simple et descriptif basé sur YAML et les modèles Jinja2 .

5. Automation d’infrastructures

Ansible s’interface avec du matériel, du logiciel ou des solutions d’un grand nombre de fournisseurs.

Péripériques physiques

  • Bare Metal avec Cobbler, Stacki, and Red Hat Satellite
  • Réseau avec Cisco, Juniper, Arista, A10, Cumulus Networks, Dell, F5 BigIP, HPE (OpenSwitch), Nokia, Palo Alto Networks etc.
  • Stockage avec NetApp, Infinidat, etc.

Virtualisation

  • VMware
  • Red Hat Enterprise Virtualization (RHEV)
  • Libvirt
  • Xenserver
  • Vagrant

Systèmes d’exploitation

  • Linux (RHEL, CentOS, Fedora, Ubuntu, et autres)
  • Windows et Windows Server
  • UNIX

Containers

  • Ansible Container
  • Docker
  • Linux Containers (LXC)

Cloud

  • Amazon Web Services (AWS)
  • Microsoft Azure
  • Cloudstack
  • OpenStack
  • Digital Ocean
  • Google Cloud Platform
  • Linode
  • ProfitBricks
  • Rackspace

Outils DevOps

  • Development:
    • Github,
    • Atlassian Bitbucket Pipelines,
    • Gitlabs,
    • Vagrant
  • Integration/Test:
    • Jenkins,
    • Travis CI,
    • Teamcity
  • Deployment:
    • Cloud Providers,
    • Containers,
    • ServiceNow,
    • Systems,
    • Virt Platforms
  • Monitoring/Analytics:
    • Splunk,
    • AppDynamics,
    • Dynatrace,
    • LogicMonitor,
    • InfluxDB

6. Cas d’usage

  • Provisioning
  • Configuration Management
  • App Deployment
  • Continuous Delivery
  • Security & Compliance
  • Orchestration

Ansible use cases

7. Automation Réseau

Si vous êtes responsable d’un réseau d’entreprise, vous savez probablement que de nombreuses opérations manuelles sont effectuées via l’interface de ligne de commande (CLI). Il n’est pas surprenant que le principal défi que rencontrent des utilisateurs en matière de réseau consiste à améliorer leur agilité, et cela est resté vrai au cours des deux dernières années.2

Ansible peut gérer des périphériques :

  • Arista (EOS),
  • Cisco (IOS, IOS XR, NX-OS),
  • Juniper (JunOS),
  • Open vSwitch
  • VyOS

Cas d’usage habituels

  • Sauvegarder et restaurer les configurations des périphériques
  • Mettre à jour les OS des périphériques réseau
  • Vérifier la conformité des configurations (compliance)
  • Appliquer des patchs sur base des CVE
  • Générer une documentation dynamique

Fondamentalement, toute opération manuelle peut être automatisée avec Ansible.

Cas d’usage habituels - automatiser des tâches discrètes

  • S’assurer de la présence/absence de VLANs
  • Activer / Désactiver Netflow sur les interfaces
  • Gestion les entrées des access-list pare-feu

Meilleures pratiques

https://docs.ansible.com/ansible/2.5/network/user_guide/network_best_practices_2.5.html