WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:ansible

Ansible

Introduction

Ansible est une plate-forme logicielle libre pour la configuration et la gestion des ordinateurs. Elle combine le déploiement de logiciels multi-nœuds, l'exécution des tâches ad-hoc, et la gestion de configuration. Elle gère les différents nœuds par dessus SSH et ne nécessite l'installation d'aucun logiciel supplémentaire à distance sur eux. 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 YAML pour exprimer des descriptions réutilisables de systèmes.

Liens utiles

Partie 1 : Installation et configuration

Installation

  1. Installer python-dev et python-pip
  2. Le mettre à jour : pip install -U pip
  3. Installer ansible via pip : pip install ansible
  4. Installer ecdsa : pip install ecdsa
  5. Installer markupsafe : pip install markupsafe
  6. Générer les clefs ssh : ssh-keygen
  7. Copier la clef publique sur les clients : ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.103.??? (pensez à activer le sshrootlogin temporairement)
  8. Creer /etc/ansible/hosts et y placer l'ip d'un client (pour le test)
  9. Tester avec : ansible all -m ping -u root

Fichier de configuration

Hosts et groupes

Le fichier /etc/ansible/hosts est au format suivant :

mail.example.com

[webservers]
foo.example.com
bar.example.com

[dbservers]
one.example.com
two.example.com:5309
three.example.com
  • On peut spécifier un port si la connexion ssh n'est pas sur le 22
  • Entre crochet se trouve les groupes, un hote peut être dans plusieurs groupes
  • On peut definir un alias : nom_alias ansible_port=5555 ansible_host=192.168.1.50
  • On peux utiliser des motifs, numériques ou alphabetiques www[01:50].example.com ou db-[a:f].example.com
  • On peut définir des variables par hotes/groupes, mais on préferera l'usage de fichiers YAML :
/etc/ansible/group_vars/group1 
/etc/ansible/group_vars/group2
/etc/ansible/host_vars/hote1

Compatibilité Windows

Partie 2 :Utilisation

Commandes Ad-hoc

Ansible peux executer des commandes en direct, cela peux être utile, pour, par exemple, executer des taches simples sur toutes les machines d'un groupe (ici la dev) :

Action Commande
Rebooter (10 en paralleles) ansible dev -a “/sbin/reboot” -f 10
Copier un fichier ansible dev -m copy -a “src=/etc/hosts dest=/tmp/hosts”
Changer les propriétés d'un fichier ansible dev -m file -a “dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan”
Creer un dossier ansible dev -m file -a “dest=/path/to/c mode=755 owner=mdehaan group=mdehaan state=directory”
Supprimer un dossier ansible dev -m file -a “dest=/path/to/c state=absent”
S'assurer qu'un paquet est a jour ansible dev -m apt -a “name=acme state=latest”
Demarrer un service ansible dev -m service -a “name=httpd state=started”
Supprimer un utilisateur ansible dev -m user -a “name=foo state=absent”
Obtenir des informations ansible dev -m setup

Playbooks

Exemple de playbook :

---
- hosts: dev
  vars:
    http_port: 80
    max_clients: 200
  remote_user: root
  tasks:
  - name: ensure apache is at the latest version
    yum: name=httpd state=latest
  - name: write the apache config file
    template: src=/srv/httpd.j2 dest=/etc/httpd.conf
    notify:
    - restart apache
  - name: ensure apache is running (and enable it at boot)
    service: name=httpd state=started enabled=yes
  handlers:
    - name: restart apache
      service: name=httpd state=restarted

Plus d'infos sur : http://docs.ansible.com/ansible/playbooks.html

Nos playbooks et notre inventaire

Vous pouvez trouver le tout sur notre gitlab dans le repo ansible/ansible

Le repo n'est pas en public mais en internal, attention tout de même à ne pas mettre de mot de passe dans les playbooks, vous pouvez laisser les champs vides ou alors faire des

vars_prompt

Notre inventaire

Il se trouve dans le dossier hosts à la racine du projet, les fichiers sont numérotés : l'ordre de déclaration des groupes à de l'importance.

wiki/services/ansible.txt · Dernière modification: 2017/12/14 14:41 par varens