Ansible

Installation Ansible

 

documentation officielle Ansible

Sur redhat, alma et derivés :
on installe le depot Epel
> sudo dnf install epel-release
puis ansible
> sudo dnf install ansible

Si on veut tester ansible avec une commande ping sur un hôte :
> ansible -i « 192.168.1.201, » all -u nico -m ping
l’ip entre quote,
all pour toutes les ips demandées
-u pour spécifier l’utilisateur du systeme distant
-k pour qu il demande le mot de passe, si la clé ssh n est pas copiée
-m pour le module ping a appliquer a l ‘hote
si la clé ssh n’est pas copiée, on peut demander l’opontion de rentrer le mot de passe avec l’option -k :
> ansible -i « 192.168.1.201, » all -u nico -k -m ping

On peut passer directement une commande avec le module command :
ansible -i « 192.168.1.201, » -u nico -m command -a uptime
pour une commande plus aboutie, on utilisera le module shell :
ansible -i « 192.168.1.201, » -u nico -m shell  » commande a exécuter »
si on veut installer un paquet :
> ansible -i  « 192.168.1.201 »  -b -m dnf -a name=httpd
-b pour passer la commande en tant que root
activation d’un service :
> ansible -i « 192.168.1.201 » -b -m service -a « name=httpd state=started enabled=yes »
ouverture du parefeu :
> ansible -i 192.168.1.201″ -b -m firewalld -a « service=http permanent=yes state=enabled »
pas de solution pour l instant , mais la commande ne redemarre pas le firewall apparement.
copie d’un fichier de teste sur le sreveur http :
> ansible -i « 192.168.1.201 » -b -m copy -a « src=test.html owner=apache group=apache dest=/var/www/html »

 

 

 

La couleur du message est également un moyen rapide d’indiquer ce qui a été réalisé par Ansible :
Une couleur rouge indiquera un problème.
Une couleur orange, un changement.
Le vert, que le système n’a pas changé.

 

 

 


editeurs de fichiers

si on utilise visual studio code pour comme editeur de fichier
il faut le lancer en tant que root :
> sudo code


 

exemple de gestion des fichiers hosts, playbooks et inventaires

/home/utilisateur/ansible-projects/mon-projet/
├── ansible.cfg
├── inventory
│       ├── production
│       └── staging
├── playbooks
│       ├── site.yml
│       ├── webservers.yml
│       └── dbservers.yml
└── roles
├── common
├── webserver
└── dbserver


SSH

Pour générer et copier les clés SSH sur les serveurs à configurer avec Ansible
Générer une paire de clés SSH :
ssh-keygen -t rsa -b 4096
Appuyez sur Entrée pour accepter l’emplacement par défaut (~/.ssh/id_rsa) et choisissez d’ajouter ou non une phrase de passe.(en teste pas de pssphrase)
Copier la clé publique sur les serveurs cibles :
ssh-copy-id utilisateur@adresse_ip_serveur
Remplacez « utilisateur » par le nom d’utilisateur sur le serveur cible et « adresse_ip_serveur » par l’adresse IP ou le nom d’hôte du serveur.

Pour autoriser root en ssh, il faut modifier le fichier /etc/ssh/sshd_config
décommenter la ligne :
#PermitRootLogin prohibit-password
et la modifier en :
PermitRootLogin yes

on sauve le fichier et on redémarre le service ssh
> sudo systemctl restart sshd


Fichiers hosts et playbook

pour commencer on a besoin de 2 fichiers :
fichiers host qui regroupe l’adresse des serveurs sur lesquels ansible va se connecter

on regroupe les serveurs par groupe, on peut mettre plusieurs groupe suivant l’utilisation :: ex d’ un fichiers hosts :
[serveurweb]
192.168.1.100
192.168.1.101
192.168.1.102

[database]
192.168.1.201
192.168.1.202

la playbook ou recette par contrte est un fichier .yaml qui doit respecter le code et l’indentation ex du fichier install.yaml :

---
- name: installation d'un serveurweb
  hosts: serveurweb
  remote_user: root

  tasks:
    - name: installation htop
      apt: name=apache2
    - name: installation php
      apt: name=php

c’est un exemple très simple pour montrer un playbook
une fois le fichier .yaml créé, il faut lancer la commande tel que :
> ansible-playbook -i hosts install.yaml
dans ce cas ci , les fichiers sont dans le même répertoire mais ils pourraient être séparés comme vu plus haut.

lien vers un tuto video tres simple