WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:ansible

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

wiki:services:ansible [2017/12/14 14:41]
varens inventaire
wiki:services:ansible [2020/06/27 18:16]
Ligne 1: Ligne 1:
-====== 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 ===== 
-  * Le portail de documentation :[[http://docs.ansible.com/ansible/index.html]] 
-  * Le portail de la communauté :[[https://galaxy.ansible.com]]  
- 
-===== Partie 1 : Installation et configuration ===== 
- 
-==== Installation ==== 
- 
-  - Installer python-dev et python-pip 
-  - Le mettre à jour : pip install -U  pip 
-  - Installer ansible via pip : pip install ansible 
-  - Installer ecdsa : pip install ecdsa 
-  - Installer markupsafe : pip install markupsafe 
-  - Générer les clefs ssh : ssh-keygen 
-  - Copier la clef publique sur les clients : ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.103.??? (pensez à activer le sshrootlogin temporairement) 
-  - Creer /etc/ansible/hosts et y placer l'ip d'un client (pour le test) 
-  - Tester avec : ansible all -m ping -u root 
- 
-==== Fichier de configuration ==== 
-   * Si configuration générale à changer : ~/.ansible.cfg 
-   * A creer depuis https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg 
-   * Description des options : http://docs.ansible.com/ansible/intro_configuration.html#getting-the-latest-configuration 
- 
-==== Hosts et groupes ==== 
- 
-Le fichier /etc/ansible/hosts est au format suivant : 
-<code> 
-mail.example.com 
- 
-[webservers] 
-foo.example.com 
-bar.example.com 
- 
-[dbservers] 
-one.example.com 
-two.example.com:5309 
-three.example.com 
-</code> 
- 
-  * 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 : 
-<code> 
-/etc/ansible/group_vars/group1  
-/etc/ansible/group_vars/group2 
-/etc/ansible/host_vars/hote1 
-</code> 
- 
-==== Compatibilité Windows ==== 
-http://docs.ansible.com/ansible/intro_windows.html#windows-how-does-it-work 
- 
-===== 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 : 
-<code> 
---- 
-- 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 
-</code> 
- 
-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 [[https://gitlab.minet.net/ansible/ansible|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 <code>vars_prompt</code> 
- 
-==== 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: 2020/06/27 18:16 (modification externe)