====== 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.