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