Add example and typo
This commit is contained in:
parent
ec13538cb7
commit
b74cf3faea
1 changed files with 58 additions and 32 deletions
88
README.md
88
README.md
|
@ -1,5 +1,3 @@
|
||||||
[](https://drone.auro.re/Aurore/ansible)
|
|
||||||
|
|
||||||
# Recettes Ansible d'Aurore
|
# Recettes Ansible d'Aurore
|
||||||
|
|
||||||
Dépendances requises :
|
Dépendances requises :
|
||||||
|
@ -15,8 +13,9 @@ Il contient la définition de chaque machine et le regroupement.
|
||||||
|
|
||||||
Quand on regroupe avec un `:children` en réalité on groupe des groupes.
|
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
|
Chaque machine est annoncée avec son hostname. Il faut pouvoir SSH sur cette
|
||||||
avec ce hostname, car c'est ce qu'Ansible fera (sauf pour les switchs, voir plus bas).
|
machine avec ce hostname, car c'est ce qu'Ansible fera (sauf pour les switchs,
|
||||||
|
voir plus bas).
|
||||||
|
|
||||||
**Playbook** : c'est une politique de déploiement.
|
**Playbook** : c'est une politique de déploiement.
|
||||||
Il contient les associations des rôles avec les machines.
|
Il contient les associations des rôles avec les machines.
|
||||||
|
@ -37,11 +36,13 @@ 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
|
**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.
|
action. Elle est associée à un module Ansible.
|
||||||
|
|
||||||
*Exemples de tâche* : installer un paquet avec le module `apt`, ajouter une ligne dans
|
*Exemples de tâche* : installer un paquet avec le module `apt`, ajouter une
|
||||||
un fichier avec le module `lineinfile`, copier une template avec le module `template`…
|
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,
|
Une tâche peut avoir des paramètres supplémentaires pour la réessayer quand
|
||||||
récupérer son résultat dans une variable, mettre une boucle dessus, mettre des conditions…
|
elle plante, récupérer son résultat dans une variable, mettre une boucle
|
||||||
|
dessus, mettre des conditions…
|
||||||
|
|
||||||
N'oubliez pas d'aller lire l'excellente documentation de RedHat sur tous les modules
|
N'oubliez pas d'aller lire l'excellente documentation de RedHat sur tous les modules
|
||||||
d'Ansible !
|
d'Ansible !
|
||||||
|
@ -50,18 +51,27 @@ d'Ansible !
|
||||||
|
|
||||||
Pour la liste complète, je vous invite à lire le fichier `hosts`.
|
Pour la liste complète, je vous invite à lire le fichier `hosts`.
|
||||||
|
|
||||||
* pour tester les versions de Debian,
|
Exemple :
|
||||||
|
|
||||||
```YAML
|
```yaml
|
||||||
ansible_lsb.codename == 'stretch'
|
[fleming_vm]
|
||||||
|
dhcp-fleming.adm.auro.re
|
||||||
|
dns-fleming.adm.auro.re
|
||||||
|
prometheus-fleming.adm.auro.re
|
||||||
|
routeur-fleming.adm.auro.re
|
||||||
|
|
||||||
|
[fleming_pve]
|
||||||
|
pve1.adm.auro.re
|
||||||
|
|
||||||
|
[fleming:children]
|
||||||
|
fleming_pve
|
||||||
|
fleming_vm
|
||||||
```
|
```
|
||||||
|
|
||||||
* pour tester si c'est un CPU Intel x86_64,
|
> NB :
|
||||||
|
>
|
||||||
```YAML
|
> L'exemple a été adapté de la configuration d'Aurore pour des raisons
|
||||||
ansible_processor[0].find('Intel') != -1
|
> pédagogiques.
|
||||||
and ansible_architecture == 'x86_64'
|
|
||||||
```
|
|
||||||
|
|
||||||
Pour les fonctions (`proxy-server`, `dhcp-dynamique`…) il a été choisi
|
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
|
de ne pas faire de groupe particulier mais plutôt de sélectionner/enlever
|
||||||
|
@ -74,10 +84,25 @@ qui peuvent ensuite être utilisés dans des variables.
|
||||||
Pour lister tous les faits qu'Ansible collecte nativement d'un serveur
|
Pour lister tous les faits qu'Ansible collecte nativement d'un serveur
|
||||||
on peut exécuter le module `setup` manuellement.
|
on peut exécuter le module `setup` manuellement.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
ansible proxy.adm.auro.re -m setup --ask-vault-pass
|
ansible proxy.adm.auro.re -m setup --ask-vault-pass
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Il est notamment possible de :
|
||||||
|
|
||||||
|
* tester les versions de Debian,
|
||||||
|
|
||||||
|
```YAML
|
||||||
|
ansible_lsb.codename == 'stretch'
|
||||||
|
```
|
||||||
|
|
||||||
|
* tester si c'est un CPU Intel x86_64,
|
||||||
|
|
||||||
|
```YAML
|
||||||
|
ansible_processor[0].find('Intel') != -1
|
||||||
|
and ansible_architecture == 'x86_64'
|
||||||
|
```
|
||||||
|
|
||||||
## Exécution d'Ansible
|
## Exécution d'Ansible
|
||||||
|
|
||||||
### Configurer la connexion au vlan adm
|
### Configurer la connexion au vlan adm
|
||||||
|
@ -88,7 +113,7 @@ Envoyer son agent SSH peut être dangereux
|
||||||
On va utiliser plutôt `ProxyJump`.
|
On va utiliser plutôt `ProxyJump`.
|
||||||
Dans la configuration SSH :
|
Dans la configuration SSH :
|
||||||
|
|
||||||
```
|
```text
|
||||||
Host *.adm.auro.re *.pve.auro.re
|
Host *.adm.auro.re *.pve.auro.re
|
||||||
# Accept new host keys
|
# Accept new host keys
|
||||||
StrictHostKeyChecking accept-new
|
StrictHostKeyChecking accept-new
|
||||||
|
@ -97,7 +122,8 @@ Host *.adm.auro.re *.pve.auro.re
|
||||||
ProxyJump passerelle.auro.re
|
ProxyJump passerelle.auro.re
|
||||||
```
|
```
|
||||||
|
|
||||||
Il faut sa clé SSH configurée sur le serveur que l'on déploit.
|
Il faut sa clé SSH configurée sur le serveur que l'on déploie.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ssh-copy-id proxy.adm.auro.re
|
ssh-copy-id proxy.adm.auro.re
|
||||||
```
|
```
|
||||||
|
@ -107,6 +133,7 @@ ssh-copy-id proxy.adm.auro.re
|
||||||
Il faut `python3-netaddr` sur sa machine.
|
Il faut `python3-netaddr` sur sa machine.
|
||||||
|
|
||||||
Pour tester le playbook `base.yml` :
|
Pour tester le playbook `base.yml` :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ansible-playbook --ask-vault-pass base.yml --check
|
ansible-playbook --ask-vault-pass base.yml --check
|
||||||
```
|
```
|
||||||
|
@ -116,7 +143,7 @@ Vous pouvez ensuite enlever `--check` si vous voulez appliquer les changements !
|
||||||
Si vous avez des soucis de fingerprint ECDSA, vous pouvez ignorer une
|
Si vous avez des soucis de fingerprint ECDSA, vous pouvez ignorer une
|
||||||
première fois (dangereux !) : `ANSIBLE_HOST_KEY_CHECKING=0 ansible-playbook...`.
|
première fois (dangereux !) : `ANSIBLE_HOST_KEY_CHECKING=0 ansible-playbook...`.
|
||||||
|
|
||||||
### Ajouter tous les empruntes de serveur
|
### Ajouter toutes les empreintes de serveur
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
@ -140,8 +167,7 @@ ansible-galaxy collection install community.general
|
||||||
ansible-galaxy collection install ansible.posix
|
ansible-galaxy collection install ansible.posix
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Si vous n'arrivez pas à entrer votre *become password* (bug dans ansible?), un
|
||||||
Si vous n'arrivez pas à entrer votre _become password_ (bug dans ansible?), un
|
|
||||||
workaround est le suivant :
|
workaround est le suivant :
|
||||||
|
|
||||||
`$ export ANSIBLE_BECOME_PASS='<votre mot de passe LDAP>'`
|
`$ export ANSIBLE_BECOME_PASS='<votre mot de passe LDAP>'`
|
||||||
|
@ -149,20 +175,20 @@ workaround est le suivant :
|
||||||
Notez l'espace au début pour ne pas log la commande dans votre historique
|
Notez l'espace au début pour ne pas log la commande dans votre historique
|
||||||
shell.
|
shell.
|
||||||
|
|
||||||
|
|
||||||
## Configuration des switchs depuis Ansible
|
## Configuration des switchs depuis Ansible
|
||||||
|
|
||||||
Afin d'acquérir de l'indépendance vis-à-vis de re2o, un module permettant de
|
Afin d'acquérir de l'indépendance vis-à-vis de re2o, un module permettant de
|
||||||
configurer les switchs depuis Ansible a été créé. Il utilise l'api rest des
|
configurer les switchs depuis Ansible a été créé. Il utilise l'api rest des
|
||||||
switchs afin de récupérer et appliquer la configuration voulu.
|
switchs afin de récupérer et appliquer la configuration voulue.
|
||||||
|
|
||||||
### Prérequis
|
### Prérequis
|
||||||
|
|
||||||
Pour utiliser le module, il faut d'abord annoncer à Ansible qu'il ne faut pas
|
Pour utiliser le module, il faut d'abord annoncer à Ansible qu'il ne faut pas
|
||||||
effectuer de connexion ssh et de ne pas récupérer les faits. Cela se fait à
|
effectuer de connexion ssh et de ne pas récupérer les faits. Cela se fait à
|
||||||
l'aide des variables `connection: httpapi` et `gather_facts: false`. Ensuite,
|
l'aide des variables `connection: httpapi` et `gather_facts: false` à placer
|
||||||
l'infrasutructue actuelle de Aurore nécéssite l'utilisation d'un proxy. Pour
|
dans le playbook (pour une configuration locale) ou dans ansible.cfg (pour une
|
||||||
cela, il suffit d'éxecuter la commande :
|
configuration globale). Ensuite, l'infrastructure actuelle de Aurore nécessite
|
||||||
|
l'utilisation d'un proxy. Pour cela, il suffit d'exécuter la commande :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ssh -D 3000 switchs-manager.adm.auro.re
|
ssh -D 3000 switchs-manager.adm.auro.re
|
||||||
|
@ -220,7 +246,7 @@ tasks:
|
||||||
|
|
||||||
Le `path` correspond à l'url de l'objet que l'on souhaite éditer et `data`
|
Le `path` correspond à l'url de l'objet que l'on souhaite éditer et `data`
|
||||||
correspond aux données qui seront envoyées dans une requête `PUT` (au format
|
correspond aux données qui seront envoyées dans une requête `PUT` (au format
|
||||||
`json`). Cependant, la configuration d'un vlan peut nécessité de le créer.
|
`json`). Cependant, la configuration d'un vlan peut nécessiter de le créer.
|
||||||
Pour remédier à ce problème, il est possible d'utiliser la syntaxe suivante :
|
Pour remédier à ce problème, il est possible d'utiliser la syntaxe suivante :
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -247,7 +273,7 @@ tasks:
|
||||||
Le variable `create_method` correspond au type de la requête pour effectuer une
|
Le variable `create_method` correspond au type de la requête pour effectuer une
|
||||||
action de création de l'objet. Il s'agit généralement de `POST`. Dans le cas
|
action de création de l'objet. Il s'agit généralement de `POST`. Dans le cas
|
||||||
où la variable n'est pas définit, la création sera désactivée et ainsi, si
|
où la variable n'est pas définit, la création sera désactivée et ainsi, si
|
||||||
l'url indiqué dans les `subpath` n'existe pas, alors la configuration échouera.
|
l'url indiquée dans les `subpath` n'existe pas, alors la configuration échouera.
|
||||||
Par conséquent, si le vlan 42 a besoin d'être créé, une requête `POST` sera
|
Par conséquent, si le vlan 42 a besoin d'être créé, une requête `POST` sera
|
||||||
effectué sur l'url `vlans` avec les données dans `data`.
|
effectué sur l'url `vlans` avec les données dans `data`.
|
||||||
|
|
||||||
|
@ -274,7 +300,7 @@ l'éxecution, le module vérifiera si un `GET` sur l'url retourne une 404.
|
||||||
> Remarque :
|
> Remarque :
|
||||||
>
|
>
|
||||||
> Si les variables `delete` et `data` sont définies (dont `delete` à `true`),
|
> Si les variables `delete` et `data` sont définies (dont `delete` à `true`),
|
||||||
> alors il en résultera une action de suppression malgrés tout.
|
> alors il en résultera une action de suppression malgré tout.
|
||||||
|
|
||||||
Puisque `subpath` est une liste, il est possible de configurer plusieurs requête
|
Puisque `subpath` est une liste, il est possible de configurer plusieurs requête
|
||||||
en même temps. Cela à l'avantage d'effectuer toutes les modifications à la suite
|
en même temps. Cela à l'avantage d'effectuer toutes les modifications à la suite
|
||||||
|
|
Loading…
Reference in a new issue