WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:ansible

Ceci est une ancienne révision du document !


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

Sécurité

La connexion sur la VM Ansible est restreinte à une connexion ssh par clé

Chiffrement

Ses partitions sont chiffrées. Un serveur SSH tourne sur son initramfs. Vous pouvez donc SSH dessus pour lancer le déchiffrement de ses disques (et donc son démarrage).

Pour cela vous avez juste à SSH en root dessus (après avoir mis ses clés comme indiqué dans la partie suivante) Après il faut executer :

echo -ne "MOTDEPASSE">/lib/cryptsetup/passfifo 

Et le serveur démarre !

Mettre ses clés SSH sur le serveur

Vous avez juste à copier votre clé publique dans le bon fichier

cat ~/.ssh/authorized_keys >> /etc/initramfs-tools/root/.ssh/authorized_keys

Puis updatez l'initramfs

update-initramfs -u
wiki/services/ansible.1499442289.txt.gz · Dernière modification: 2020/06/27 18:15 (modification externe)