====== GSB - les tests ======
Les test sont prévus pour chaque (presque) machine de l'infrastructure grâce à l'outil **goss**
( https://github.com/aelsabbahy/goss)
Goss permet pour une machine données d'effectuer des **tests fonctionnels** (paquets installés, ports ouverts, interfaces réseau, services actifs, processus lancés, résultats de commande, fichiers ...)
Les commandes :
* **v** : validate
* **add** : ajouter un test
* **aa** : auto add : ajoute une ressource de test
* **render** : affiche les commandes exécutées ainsi que le résultat
Pour plus d'information, cf : https://github.com/aelsabbahy/goss/blob/master/docs/manual.md
Pour effectuer la vérification, **goss** utilise le fichier **goss.yaml** situé dans le répertoire courant.
Ce fichier **goss.yml** est produit par des appels successifs à la commande **goss add**, appels permettant d'ajouter des descriptions de test (cf plus loin).
goss v # goss validate avec le fichier goss.yaml
goss -g fichier.yaml v # goss validate avec le fichier fichier.yaml
===== Utilisation de goss sur une machine =====
cd tools/ansible/gsb/goss
goss -g $HOSTNAME.yaml v
....................................................
Total Duration: 0.064s
Count: 38, Failed: 0, Skipped: 0
On constate que 38 tests on été effectués et que aucun n'a posé de problème. En cas de problème, goss affiche les tests problématiques
==== Goss.yaml : un exemple ====
Exemple de fichier **goss.yaml** (pour **s-adm**)
package:
dnsmasq:
installed: true
versions:
- 2.72-3+deb8u1
squid3:
installed: true
addr:
tcp://depl.sio.lan:80:
reachable: true
timeout: 500
port:
tcp:53:
listening: true
ip:
- 0.0.0.0
tcp6:53:
listening: true
ip:
- '::'
tcp6:8080:
listening: true
ip:
- '::'
udp:53:
listening: true
ip:
- 0.0.0.0
udp:67:
listening: true
ip:
- 0.0.0.0
udp6:53:
listening: true
ip:
- '::'
service:
dnsmasq:
enabled: true
running: true
squid3:
enabled: true
running: true
ssh:
enabled: true
running: true
user:
dnsmasq:
exists: true
uid: 111
gid: 65534
groups:
- nogroup
home: /var/lib/misc
shell: /bin/false
group:
ssh:
exists: true
gid: 108
command:
sysctl net.ipv4.ip_forward:
exit-status: 0
stdout:
- net.ipv4.ip_forward = 1
stderr: []
timeout: 10000
dns:
depl.sio.lan:
resolveable: true
addrs:
- 10.121.38.10
timeout: 500
process:
dnsmasq:
running: true
squid3:
running: true
interface:
eth1:
exists: true
addrs:
- 192.168.99.99/24
- fe80::a00:27ff:fe2a:1e26/64
==== Goss - Installation ====
curl -fsSL https://goss.rocks/install | sh
==== Goss - goss.yaml : spécifications ====
=== interfaces statiques ===
* goss add interface eth0
* goss add interface eth1
=== routes/passerelles ===
* goss add command "ip r | grep default"
* goss aa application/service (bind9, ...)
==== Goss et GSB ====
le dépot **gsb** comporte un répertoire **goss** qui contient des fichiers de test yaml nommés du nom de la machine (s-infra.yaml, ...). A ce jour, trois machines disposent de fichiers de test : **s-adm**, **s-infra** et **r-int**.
Pour lancer un test goss, il suffit de taper la commande ''gsbchk'' qui lance goss avec le fichier gossfile qui porte le nom de la machine considérée.