Merge crans Ansible conf
This commit is contained in:
parent
7f07556cfa
commit
a2e9ab7d3f
2 changed files with 91 additions and 32 deletions
117
README.md
117
README.md
|
@ -1,56 +1,115 @@
|
|||
# Playbook et rôles Ansible d'Aurore
|
||||
# Recettes Ansible d'Aurore
|
||||
|
||||
Ces politiques de déployement nécessite Ansible 2.7 ou plus récent.
|
||||
Le paquet dans Debian Buster est suffisamment à jour, sinon vous pouvez l'obtenir de la façon suivante :
|
||||
Ensemble des recettes de déploiement Ansible pour les serveurs d'Aurore.
|
||||
Pour les utiliser, vérifiez que vous avez au moins Ansible 2.7.
|
||||
|
||||
```bash
|
||||
pip3 install --user ansible
|
||||
## Ansible 101
|
||||
|
||||
Si vous n'avez jamais touché à Ansible avant, voilà une rapide introduction.
|
||||
|
||||
**Inventory** : c'est le fichier `hosts` d'inventaire.
|
||||
Il contient la définition de chaque machine et le regroupement.
|
||||
|
||||
Quand on regroupe avec un `:children` en réalité on groupe des groupes.
|
||||
|
||||
Chaque machine est annoncée avec son hostname. Il faut pouvoir SSH sur cette machine
|
||||
avec ce hostname, car c'est ce qu'Ansible fera.
|
||||
|
||||
**Playbook** : c'est une politique de déploiement.
|
||||
Il contient les associations des rôles avec les machines.
|
||||
|
||||
L'idée au Crans est de regrouper par thème. Exemple, le playbook `monitoring.yml`
|
||||
va contenir toutes les définitions machines-rôles qui touchent au monitoring.
|
||||
Cela permet de déployer manuellement tout le monitoring sans toucher au reste.
|
||||
|
||||
**Rôle** : un playbook donne des rôles à des machines. Ces rôles sont tous dans
|
||||
le dossier `roles/`. Un rôle installe un service précis sur un serveur.
|
||||
|
||||
Il est préférable d'être atomique sur les rôles plutôt d'en coder un énorme
|
||||
qui sera difficilement maintenable.
|
||||
|
||||
*Exemples de rôle* : activer les backports pour ma version de Debian, installer NodeJS,
|
||||
déployer un serveur prometheus, déployer une node prometheus…
|
||||
|
||||
**Tâche** : un rôle est composé de tâches. Une tâche effectue une et une seule
|
||||
action. Elle est associée à un module Ansible.
|
||||
|
||||
*Exemples de tâche* : installer un paquet avec le module `apt`, ajouter une ligne dans
|
||||
un fichier avec le module `lineinfile`, copier une template avec le module `template`…
|
||||
|
||||
Une tâche peut avoir des paramètres supplémentaires pour la réessayer quand elle plante,
|
||||
récupérer son résultat dans une varible, mettre une boucle dessus, mettre des conditions…
|
||||
|
||||
N'oubliez pas d'aller lire l'excellent documentation de RedHat sur tous les modules
|
||||
d'Ansible !
|
||||
|
||||
### Gestion des groupes de machines
|
||||
|
||||
Pour la liste complète, je vous invite à lire le fichier `hosts`.
|
||||
|
||||
* pour tester les versions de Debian,
|
||||
|
||||
```YAML
|
||||
ansible_lsb.codename == 'stretch'
|
||||
```
|
||||
|
||||
## Exécution d'un playbook
|
||||
* pour tester si c'est un CPU Intel x86_64,
|
||||
|
||||
Pour appliquer le playbook `base.yml` :
|
||||
```bash
|
||||
ansible-playbook --ask-vault-pass base.yml
|
||||
```YAML
|
||||
ansible_processor[0].find('Intel') != -1
|
||||
and ansible_architecture == 'x86_64'
|
||||
```
|
||||
|
||||
Il est souhaitable de faire un test avant avec `--check` si on a des doutes !
|
||||
Pour les fonctions (`proxy-server`, `dhcp-dynamique`…) il a été choisi
|
||||
de ne pas faire de groupe particulier mais plutôt de sélectionner/enlever
|
||||
les machines pertinentes directement dans les playbooks.
|
||||
|
||||
## FAQ
|
||||
### Lister tout ce que sait Ansible sur un hôte
|
||||
|
||||
### Mettre sa clé SSH sur une machine
|
||||
Lors du lancement d'Ansible, il collecte un ensemble de faits sur les serveurs
|
||||
qui peuvent ensuite être utilisés dans des variables.
|
||||
Pour lister tous les faits qu'Ansible collecte nativement d'un serveur
|
||||
on peut exécuter le module `setup` manuellement.
|
||||
|
||||
```
|
||||
ssh-copy-id -i ~/.ssh/id_rsa_aurore.pub virtu.fede-aurore.net
|
||||
ansible proxy.adm.auro.re -m setup --ask-vault-pass
|
||||
```
|
||||
|
||||
### Automatiquement ajouter fingerprint ECDSA (dangereux !)
|
||||
## Exécution d'Ansible
|
||||
|
||||
Il faut changer la variable d'environnement suivante :
|
||||
`ANSIBLE_HOST_KEY_CHECKING=0`.
|
||||
### Configurer la connexion au vlan adm
|
||||
|
||||
### Configurer la connexion au bastion
|
||||
Envoyer son agent SSH peut être dangereux
|
||||
([source](https://heipei.io/2015/02/26/SSH-Agent-Forwarding-considered-harmful/)).
|
||||
|
||||
Envoyer son agent SSH peut être dangereux ([source](https://heipei.io/2015/02/26/SSH-Agent-Forwarding-considered-harmful/)).
|
||||
|
||||
On va utiliser plutôt ProxyJump.
|
||||
On va utiliser plutôt `ProxyJump`.
|
||||
Dans la configuration SSH :
|
||||
|
||||
```
|
||||
# Use a key to log on all Aurore servers
|
||||
# and use a bastion
|
||||
# Use a key to log on all Crans servers
|
||||
# and use a proxy server
|
||||
Host 10.128.0.* *.adm.auro.re
|
||||
IdentityFile ~/.ssh/id_rsa_aurore
|
||||
ProxyJump proxy.auro.re
|
||||
IdentityFile ~/.ssh/id_rsa
|
||||
ProxyJump auro.re
|
||||
```
|
||||
|
||||
Il faut savoir que depuis Ansible 2.5, des connexions persistantes sont créées
|
||||
vers les serveurs puis détruites à la fin de l'exécution.
|
||||
Il faut donc éviter de lancer une connexion SSH persistante pendant l'exécution
|
||||
d'Ansible.
|
||||
|
||||
### Lister tout ce que sait Ansible sur un hôte
|
||||
Il faut sa clé SSH configurée sur le serveur que l'on déploit.
|
||||
```bash
|
||||
ssh-copy-id proxy.adm.auro.re
|
||||
```
|
||||
|
||||
### Lancer Ansible
|
||||
|
||||
Pour tester le playbook `base.yml` :
|
||||
```bash
|
||||
ansible-playbook --ask-vault-pass base.yml --check
|
||||
```
|
||||
ansible -i hosts ldap-replica-fleming1.adm.auro.re -m setup --ask-vault-pass
|
||||
```
|
||||
|
||||
Vous pouvez ensuite enlever `--check` si vous voulez appliquer les changements !
|
||||
|
||||
Si vous avez des soucis de fingerprint ECDSA, vous pouvez ignorer une
|
||||
première fois (dangereux !) : `ANSIBLE_HOST_KEY_CHECKING=0 ansible-playbook...`.
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Aurore Ansible configuration
|
||||
# Ansible configuration
|
||||
|
||||
[defaults]
|
||||
|
||||
|
|
Loading…
Reference in a new issue