Commit 0532b2c3 authored by nono's avatar nono 💻
Browse files

Merge branch 'nouvelle-infra' of git.laquadrature.net:lqdn-interne/piops into nouvelle-infra

parents 9f332375 cf8f20ae
# PiOps playbook
```
████████████ ████████████
███████████ ████████████████ ███████████
███████ ▄██████████████████████▄ ████████
█████ █████████████████████████████▄ █████
███ ██████████████████████████████████▄ ███
█ ██████████████████████████████████████▄ █
██████████████████████████████████████████
███████████▀ ████████
██████████▀ ████ ███████ ████████████████
▓█████████▌ █████▌ ███████ █████████████████
███████████▆▆█████▌ ███████ █████████████████
██████████████████▌ ███████ █████████████████
█████████████████▌ ████████ █████████████████
█████████████████▌ ████████ █████████████████
█████████████████ ████████ █████████████████
▐██████████████ █████████ ████████████████▌
█████████████▀ █████████ ██▌ ███████████
▐██████████▀ █████████ ▐█████████▌
▀█████████ ▄█████████▆ ▐█████████▀
█ ▀█████████▆▆██████████████▆▆▆▆▆███████▀ █
███ ▀██████████████████████████████████▀ ██
█████ ██████████████████████████████▀ ████
███████ ▀█████████████████████████▀ ██████
██████████ ██████████████████▀▀ █████████
████████████ ███████████
![Logo du dépôt PiOps](https://git.laquadrature.net/uploads/-/system/project/avatar/238/bookonscreen.jpg?width=128)
# PiOps playbook
```
> Ce dépôt contient l'ensemble des configurations des serveurs de LQDN. Cette configuration est gérée par Ansible.
Le but de ce projet est de pouvoir faciliter le travail des équipes techniques
de LQDN en développant un ensemble de recettes décrivant l'infrastructure.
### Doc ansible
Pour référence, la documentation pour la dernière version d'ansible est
[ici](https://docs.ansible.com/ansible/latest/user_guide/)
## Configuration
## Installation
Commencez par télécharger le dépôt sur votre ordinateur de contrôle. Pour cela, il vous suffit de faire :
......@@ -60,31 +30,12 @@ Assurez-vous d'avoir une connexion SSH à l'ensemble des serveurs listés dans l
Une fois le dépôt sur votre ordinateur de contrôle, vous devez choisir si vous voulez fait un test, ou une mise en production. Pour cela, voyez dans le fichier `inventory.yml` quels serveurs sont affectés au groupe production et ceux affectés au groupe test.
Dans chaque cas, vous aurez à ajuster les variables dans le dossier `group_vars/<service>/<service>.vault.yml` pour les données sensible, et `group_vars/<service>/<service>.yml` pour les autres.
### Ajouter un rôle
Pour ajouter un rôle, cela se passe en deux étapes ;
- Ajouter le rôle au dépôt `piops` comme un sous module:
- Ajout : `cd roles && git submodule add -b master <url git du rôle>`
- Synchronisation : `cd .. && git submodule update --init --recursive`
Vous devrez maintenant avoir un dossier du nom de votre rôle dans le dossier `roles` de ce dépôt. Il ne vous reste plus qu'a le configurer ;
- Dans le fichier `test|production.yml`, ajoutez la tâche qui correspond à vôtre rôle. Vous devriez avoir reçu des indiquations sur la façon de procéder avec le rôle en question, sinon, renseignez vous en lisant le rôle et en notant les variables qui n'ont pas d'affectation par défaut.
📖 Voir les [conventions](docs/CONVENTION.md) et la [configuration](docs/CONFIG.md).
## Utilisation
Une fois que vous avez remplis le fichier hosts, vous pouvez éxécutez le playbook de la manière suivante :
`~$ ansible-playbook test.yml --ask-vault-pass --syntax-check`
pour effecuter un test de syntaxe.
Pour éxecuter le playbook, faites ceci :
Une fois que vous avez remplis l'inventaire, vous pouvez éxécutez le playbook de la manière suivante :
`~$ ansible-playbook test.yml --ask-vault-pass`
`$ ansible-playbook test.yml --ask-vault-pass`
Si vous ne voulez pas exécuter l'ensemble du playbook, vous pouvez utiliser des tags, comme par exemple le nextcloud ;
......@@ -96,26 +47,45 @@ Si vous avez définit des groupes ou des hôtes, vous pouvez choisir de n'éxéc
La différence entre ces deux options, c'est la nécessité d'ajouter des tags dans le premier cas, alors que dans le deuxième cas, vous pouvez éxécuter tout les chapitres d'un groupe ou hôte.
📖 Voir la [configuration](docs/CONFIG.md) et les [roles](docs/ROLES.md).
### Exemple :
Je voudrai déployer le rôle [shell-lqdn](https://git.laquadrature.net/lqdn-interne/piops-roles/shell-lqdn).
- Je vérifie qu'il est bien présent dans le dossier `roles/`,
- Je vérifie qu'il est bien présent dans le fichier `test.yml,`
- Il nécessite une configuration, je regarde dans le fichier `roles/shell-lqdn/vars/main.yml` si j'ai besoin de faire des ajouts ;
- Si oui, je fait mes modifications et ajouts dans `group_vars/test/test.yml`.
- Sinon, je continue.
- Je vérifie la syntaxe du playbook.
- J'éxécute [le test](docs/TEST.md) 📖
- `$ ansible-playbook test.yml --ask-vault-pass`
- Si tout se passe bien, mon rôle est déployé sur les serveurs faisant parti du group `test`.
## Documentation
Le playbook permet de 1) Configurer les hôtes sur lesquels appliquer les rôles et 2) Configurer les variables de ces rôles.
La documentation pour ce playbook se trouve [dans le dossier docs/](docs/README.md) et indiqué par l'emoji 📖 .
Nous avons deux playbook : Un pour les tests, et un pour la production.
Le playbook permet de ;
Les hôtes sont à renseigner dans le fichier `inventory.yml`.
1. Configurer les hôtes sur lesquels appliquer les rôles
2. Configurer les variables de ces rôles.
Les rôles sont trouvables dans le dossier `roles`. Le contenu de chaque rôle est géré dans son propre dépôt git, trouvable ici : https://git.laquadrature.net/lqdn-interne/piops-roles
Nous avons deux playbook :
- Un pour les tests : `test.yml`
- un pour la production : `production.yml`
Ils sont ensuite ajouté au dépôt via la commande `git submodules`. Cela permet de les intégrer à ce dépôt, tout en suivant les modifications de chaque dépôt dans son propre historique. Pour plus d'informations, voir [la documentation git.](https://git-scm.com/docs/git-submodule).
Les hôtes sont à renseigner dans le fichier `inventory.yml`.
Afin de savoir quels variables vous avez besoin de configuer pour chaque rôles, lisez le fichier `README.md` du dépôt correspondant au rôle qui vous intéresse. Vous pouvez aussi voir quels variables sont configurés dans le dossier `group_vars`.
Les rôles sont trouvables dans le dossier `roles`. Le contenu de chaque rôle est géré dans son propre dépôt git, trouvable ici : https://git.laquadrature.net/lqdn-interne/piops-roles
### Description de déroulement de la pièce ( play )
### Déroulement du playbook
- Nous avons plusieurs types de serveurs : **production** et **test** ainsi que le groupe pour chaque service.
- Pour chaque serveur, nous avons un ensemble de rôles qui vont être exécutés sur tout les serveurs. Ce sont ceux listés dans `site.yml``hosts: all`. [^1]
- Pour chaque serveur, nous avons un ensemble de rôles qui vont être exécutés sur tout les serveurs. Ce sont ceux listés par exemple dans `production.yml``hosts: all`. [^1]
- Ensuite, chaque serveur ayant **un** service et un seul, nous avons un ensemble de rôle décrivant la configuration à ce serveur en particulier. Par exemple, pour un serveur imaginaire, nous pouvons imaginer la configuration suivante :
```
......@@ -124,46 +94,19 @@ Afin de savoir quels variables vous avez besoin de configuer pour chaque rôles,
roles:
- shell-lqdn
- updates-lqdn
- security-lqdn
- monitoring-lqdn
- service-imaginaire-lqdn
```
Et ce, pour chaque serveur.
#### Configuration partagée basique
La configuration basique se découpe en plusieurs points :
- Sécurité
- `security-lqdn`
- Ce rôle configure les paquets `fail2ban`, `portsentry`, `rkhunter`, `tripwire`, `lynis`.
- `ansible-role-firewall`
- Configuration du firewall, à travers `iptables`
- Surveillance
- `logging-lqdn`
- Configuration des logs, à travers `logrotate`
- `ansible-node-exporter`
- Export des données de chaque serveur au niveau hardware. Consommées par le serveur admin avec grafana + prometheus.
- Mises à jours
- `updates-lqdn`
- Mises à jours à travers `unattend-upgrades`.
- Configuration utilisateurices
- `packages-lqdn`
- Installation des paquets supplémentaires par défaut.
- `shell-lqdn`
- Configuration des comptes utilisateurices et logging des actions de ces comptes.
À noter que les hôtes peuvent se trouver dans plusieurs groupes. Par exemple, le groupe Nextcloud ne contient d'un seul serveur, lqdncloud. Par contre, lqdncloud se trouve dans le groupe nextcloud, ainsi que dans le groupe production.
Nous avons donc les hôtes, qui se trouvent dans un ou plusieurs groupes. Il peut aussi y avoir des groupes contenant plusieurs serveurs, si par exemple nous voudrions plusieurs serveurs avec le même service ( SSO, Etherpad, nodeBB )...
## Questions Fréquemment Posées
### Ajouter un·e utilisateurice
### Contribuer
Afin d'ajouter un accès à un serveur, voyez le rôle `shell-lqdn`.
Si vous avez lut jusqu'ici, merci ! Pour nous aider à contribuer à ce playbook, vous pouvez prendre contact avec l'équipe technique de la Quadrature Du Net, via
- Le dépôt gitlab, en ouvrant des tickets ou des pull-requests.
- [Via Matrix/IRC](https://lqdn.fr/nous)
### Ajouter un paquet
### Licence
Afin d'ajouter un paquet, voyez le rôle `packages-lqdn`.
GPLv3
......@@ -14,6 +14,9 @@ roles_path = roles/
ansible_managed = "⚠ Ce fichier est géré par Ansible !"
# Configuration de l'affichage des playbooks
stdout_callback = yaml
# Ansible va nous prévenir si des commandes peuvent être remplacé
# par des modules ansible.
command_warnings = True
......
# Configuration du Playbook
## Options pour l'éxécution
### Installer le playbook
Pour effectuer l'installation complète du playbook, vous avez simplement à l'éxécuter avec la commande suivante ;
```
$ ansible-playbook production.yml -i inventory.yml --ask-vault-pass
```
### Effectuer des mises à jours
Lors de l'éxécution du playbook, vous pouvez utiliser le tag `update` pour effectuer les mises à jours ;
```
$ ansible-playbook production.yml -i inventory.yml --tags=update --ask-vault-pass
```
## Configuration partagée basique
La configuration basique, appliquée à tout les serveurs, se découpe en plusieurs points :
- Sécurité
- `security-lqdn`
- Ce rôle configure les paquets `fail2ban`, `portsentry`, `rkhunter`, `tripwire`, `lynis`.
- `ansible-role-firewall`
- Configuration du firewall, à travers `iptables`
- Surveillance
- `logging-lqdn`
- Configuration des logs, à travers `logrotate`
- `ansible-node-exporter`
- Export des données de chaque serveur au niveau hardware. Consommées par le serveur admin avec grafana + prometheus.
- Mises à jours
- `updates-lqdn`
- Mises à jours à travers `unattend-upgrades`.
- Configuration utilisateurices
- `packages-lqdn`
- Installation des paquets supplémentaires par défaut.
- `shell-lqdn`
- Configuration des comptes utilisateurices et logging des actions de ces comptes.
À noter que les hôtes peuvent se trouver dans plusieurs groupes. Par exemple, le groupe Nextcloud ne contient d'un seul serveur, lqdncloud. Par contre, lqdncloud se trouve dans le groupe nextcloud, ainsi que dans le groupe production.
Nous avons donc les hôtes, qui se trouvent dans un ou plusieurs groupes. Il peut aussi y avoir des groupes contenant plusieurs serveurs, si par exemple nous voudrions plusieurs serveurs avec le même service ( SSO, Etherpad, nodeBB )...
# Conventions d'écriture
### Stockage des variables
Dans chaque cas, vous aurez à ajuster les variables dans le dossier `group_vars/<service>/<service>.vault.yml` pour les données sensible, et `group_vars/<service>/<service>.yml` pour les autres.
## Questions Fréquemment Posées
### Ajouter un·e utilisateurice
Afin d'ajouter un accès à un serveur, voyez le rôle `shell-lqdn`.
### Ajouter un paquet
Afin d'ajouter un paquet, voyez le rôle `packages-lqdn`.
# Notes
> Regroupement d'informations sur Ansible et son fonctionnement, ainsi que des astuces et des ressources.
## Dépôts de rôles
- Les dépôts Debian Ops
- https://github.com/debops/debops
- https://docs.debops.org/en/master/ansible/roles/index.html
- Ansible Galaxy
- https://galaxy.ansible.com/
- Roles de Jeff Geerling
- https://github.com/geerlingguy
- Playbook pour matrix
- https://github.com/spantaleev/matrix-docker-ansible-deploy
- En usage pour le serveur Marix LQDN
# Documentation PiOps
## Sommaire
- [Options de configuration](CONFIG.md)
- [Réaliser des tests](TEST.md)
- [Conventions d'écriture](CONVENTION.md)
- [Ajouter un nouveau rôle](ROLES.md)
- [FAQ](FAQ.md)
# Références
> Les références vers de la documentation en amont.
### Doc ansible
Pour référence, la documentation pour la dernière version d'ansible est
[ici](https://docs.ansible.com/ansible/latest/user_guide/)
### Ajouter un rôle
Pour ajouter un rôle, cela se passe en deux étapes ;
- Ajouter le rôle au dépôt `piops` comme un sous module:
- Ajout :
- `cd roles`
- `git submodule add -b master <url git du rôle>`
- Synchronisation :
- `cd ../piops`
- `git submodule update --init --recursive`
Ils sont ajouté au dépôt via la commande `git submodules` qui permet de les intégrer à ce dépôt, tout en suivant les modifications de chaque dépôt dans son propre historique. On as donc une référence externe.
Vous devrez maintenant avoir un dossier du nom de votre rôle dans le dossier `roles` de ce dépôt. Il ne vous reste plus qu'a le configurer ;
### Configurer un rôle
Afin de savoir quels variables vous avez besoin de configuer pour chaque rôles, lisez le fichier `README.md` du dépôt correspondant au rôle qui vous intéresse. Vous pouvez aussi voir quels variables sont configurés dans le dossier `group_vars`.
Dans le fichier `test|production.yml`, ajoutez la tâche qui correspond à vôtre rôle. Vous devriez avoir reçu des indiquations sur la façon de procéder avec le rôle en question, sinon, renseignez vous en lisant le rôle et en notant les variables qui n'ont pas d'affectation par défaut.
Pour plus d'informations, voir [la documentation git](https://git-scm.com/docs/git-submodule).
### Mise à jour des rôles
Pour votre plus grand plaisir, il suffit d'éxécuter `./tools/update-roles.sh` pour mettre à jour tout les rôles.
# Réaliser des tests
### Tester le playbook
#### Syntaxe
Pour effecuter un test de syntaxe ;
`$ ansible-playbook test.yml --ask-vault-pass --syntax-check`
#### Exécution
Afin de tester le bon déroulement des commandes ci-dessus, vous pouvez éxécuter le playbook sur un inventaire de test.
Commencez par completer le fichier `test-inventory.yml`, puis completez le fichier `group_vars/test/test.vault.yml`
Ensuite, vous pouvez lancer le playbook ;
```
$ ansible-playbook test.yml -i test-inventory.yml --ask-vault-pass
```
### Tester sur l'infrastructure lqdn
Sur l'infrastructure de La Quadrature, nous utilisons le serveur `lqdn-test` pour effectuer des tests. En général, nous utilisons un tag associé au rôle que nous voulons tester. Par exemple, pour tester le rôle keycloak ;
```
$ ansible-playbook test.yml -i inventory.yml --limit test.lqdn.fr --tags=test --ask-vault-pass
```
### Tester des rôles
Nous utilisons Vagrant et Molecule pour effectuer les tests dans les rôles. Toute la configuration de test pour chaque rôle est décrite dans le dossier `molecule` de chaque rôle.
Pour référence, voir ;
- https://floatingpoint.sorint.it/blog/post/setting-up-molecule-for-testing-ansible-roles-with-vagrant-and-testinfra
Vous pouvez aussi faire des tests petit à petit. Voir ;
- https://docs.ansible.com/ansible/latest/user_guide/playbooks_startnstep.html
---
# Global
monitoring_service_url: "stats.test.lqdn.fr"
# This file is used by the serveur who collects the statistics of other servers.
# It install node_exporter, exposed locally, prometheus, and grafana with a dashboard.
# Ce fichier est utilisé par le serveur qui collecte les statistiques des autres serveurs.
# Il install node_exporter, exposé locallement, prometheus et grafana avec son bureau.
# Cerbot
certbot_install_method: package
......@@ -14,7 +17,6 @@ certbot_auto_renew_options: "--webroot -w /var/www/letsencrypt && systemctl relo
certbot_auto_renew: true
# Nginx
nginx_vhosts:
- listen: "443 ssl http2"
server_name: "{{ monitoring_service_url }}"
......@@ -61,25 +63,10 @@ nginx_vhosts:
}
# Firewall
# firewall_allowed_tcp_ports:
# - "22"
# - "80"
# - "443"
# Node-exporter
node_exporter_version: "latest"
node_exporter_web_listen_address: "0.0.0.0:9100"
# node_exporter_tls_server_config:
# cert_file: "/etc/letsencrypt/live/{{ monitoring_service_url }}/fullchain.pem"
# key_file: "/etc/letsencrypt/live/{{ monitoring_service_url }}/privkey.pem"
#
# node_exporter_basic_auth_users:
# nono: "{{ vautl_test_node_exporter_basic_auth_users_nono }}"
# Prometheus
prometheus_version: "latest"
......@@ -98,15 +85,16 @@ prometheus_scrape_configs:
- files:
- "{{ prometheus_config_dir }}/file_sd/node.yml"
# Add servers to monitor below
# Ajoutez les serveurs sous surveillance ici
prometheus_targets:
node:
- targets:
- localhost:9100
- stats.sso.lqdn.fr
- stats.test.lqdn.fr
labels:
env: test
# Grafana
grafana_instance: "{{ monitoring_service_url }}"
grafana_address: "0.0.0.0"
......
---
# This file is used to deploy the node_exporter to servers who are undersurveillance,
# thus they do not install grafana or prometheus, and expose the node_exporter API
# to a stats.<server fdn>. For example, stats.test.lqdn.fr
# Ce fichier contient la configuration des serveurs sous surveillance, et n'installe que
# node_exporter, et pas grafana ou prometheus. De plus, il expose l'API de node_exporter
# sur stats.<ndd serveur>. Par exemple, stats.test.lqdn.fr
# Cerbot
certbot_install_method: package
certbot_admin_email: "{{ sysadmin_email }}"
certbot_create_if_missing: true
certbot_create_method: standalone
certbot_certs:
- domains:
- "{{ monitoring_service_url }}"
certbot_auto_renew_options: "--webroot -w /var/www/letsencrypt && systemctl reload nginx"
certbot_auto_renew: true
# Nginx
nginx_vhosts:
- listen: "443 ssl http2"
server_name: "{{ monitoring_service_url }}"
access_log: "/var/log/nginx/{{ monitoring_service_url }}.log"
error_log: "/var/log/nginx/{{ monitoring_service_url }}_error.log"
state: "present"
template: "{{ nginx_vhost_template }}"
filename: "{{ monitoring_service_url }}.https.conf"
extra_parameters: |
location / {
proxy_buffering off;
proxy_set_header Referer $http_referer;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_pass http://{{node_exporter_web_listen_address}};
proxy_redirect off;
}
location /.well-known/acme-challenge {
alias /var/www/letsencrypt/.well-known/acme-challenge;
}
ssl_certificate /etc/letsencrypt/live/{{ monitoring_service_url }}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{{ monitoring_service_url }}/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
- listen: "80"
server_name: "{{ monitoring_service_url }}"
access_log: "/var/log/nginx/{{ monitoring_service_url }}.log"
error_log: "/var/log/nginx/{{ monitoring_service_url }}_error.log"
state: "present"
template: "{{ nginx_vhost_template }}"
filename: "{{ monitoring_service_url }}.http.conf"
extra_parameters: |
location / {
return 302 https://{{ monitoring_service_url }}$request_uri;
}
# Node-exporter
node_exporter_version: "latest"
node_exporter_web_listen_address: "0.0.0.0:9100"
$ANSIBLE_VAULT;1.1;AES256
38623164303836363432653836343237613335653733373933666230633936353238393361666232
3334326461336366663561653638376561626466326334620a306562306433373363633864353435
64646330633335613232653031663465343937626239366633613266353664643663353238633964
6538613038333736300a663262636534626239643530656266343836363739376366636164633231
31636339356330333364663435363530343035303438386339373531343331636662666465353431
38623737656334343965313634376435336233333261316163653631316133303165376432353036
35353165663432363930346266653430663330303064356266383230333430396266343464306162
62666235393734663933396464306230663034656166343961643730383131623333376334333734
37366236323536363130643931313937636635353432633437613165616333633433613265376230
31393137366132393264383736316362663234393465303236373230623838303366353661303136
35303837343563393135653961633734303337386538666366663039343335616537343133613733
36626566636634306162626261323134616365323335643263663964646638336362363062653264
61353763636330393861303863356566643930646131303861386565323364613362626564653739
37663639653865656239386130326237623137663163633636353131333466353632366437386637
66613761383536306265393036383866613432343462656161366234323636366437616630363766
33376432363038653639633065636161616338383330653631633263623839646665646436336337
35653237336562643763373636346332396331643664613430376538616664643735376161616131
39376666363236383739323137303364353632383938653165396366333865616264656163613334
31303764633661393165303863346562303263383431393465343362643131333966313566383936
37626438326135643062313062616564393262666536343764313433313433643931366234303536
63663864373430646136303538313664343162313663636136353836376636313933396361666135
31393966613938323563353363653162336165656663613133303935393231393834383434393334
62353630343239376639636164306136383835633134363835383734613837646164323236653366
35616366653732646636366530336331623835356463666531383564653663623431386563373262
36353938666664643963373830393562623463323161353062663835653637366136333335303862
38353066653664633632323261626235633932643730313133306633633664323637323831356331
35323166313839373765643962376537373565646231656132636264643139623664363064316564
37643838313066643035643432373961636635336662346433613431396330303730666433663338
63303565363831613263346266343865323865643564376537633732363835626539383464363736
64663632316665616636303035376535346162356331363733353636323266353336616630393062
36303535356466383761353431663262393430313964336238376663663233626463386161316363
39666235316366336431316564343832393461376633373933366566303862373430653162303463
65616535326336376363366639393530313532313464333838353563623930616263386663363333
30313866643838313637656165653765353866353866323232366437363263633938386166613130
32303531303236363065323236306561363364633036613030333935353563666261633166343866
30333937393833326533323330393063323964313434656139636536613836366633346439363262
34376331393237383866356137623763316164343863366334663836666638376461376561616566
65323530303933393532353137396566346336613066353063623066613631366332623662633062
31313233653838626432383266323232393437623062313238316632393865623961313464363333
39653535343339663636653161343834643331356537643163656666376136353963626265373661
64326139393633336636393364643462376563396561656335663764313536363262336461333037
33383761333331303737323832353334393531666537373062313037633864376565363261653965
38633533396635373936636630336536643565326335626130343335373065643036346433643037
64663135363735386365633634333762663264643863636238323838396266366636656664336335
62383637623433363161623930353662643865363766363937623361623136386363366562326439
32313562633332346566373030656464366564333135336165393435306163323539653236616363
33353264336431616434666533616536333132366662373636636133303830383733333333343837
63636461316639333032633864356636363934393164333861336132666162626632323663656334
38643839363437313366353561323132666436353332383538373634363030323337376335323262
3363633134653336383033353466626266313239353565353165
30663836616239353566383131616463326361303839376266323265613036373138313533643234
6539356331333036663262646132383535386334333935330a333231336131383562313732666332
35646137356264353066643361623830363432333031353461306131656234653733613037613138
3530616166626130640a653763316536343536313064633564343964336264663736303762396131
64376538613135323434633238313262383038363134383866373339393938643861366138636364
66306438613330386530656235613434383265626662326339316132663263363837666365393839
66643033656465353361383637386531353966376133616537666230646331396365386635613037
32353733366435346565333961393762303264303034353631626565363830363930663261316230
66653564626236666237613861356435613037306464393133343330393166646462616636633263
62306231666165613562313036383336346332303763313231306333306134653231306466653161
65306536356331303830343861336466393330643864616235653566316637376166393736343962
35336436643365653263353437356439643830316366353332393335353434313832393131623861
32373662376137336634613961313035376162633338616138663261323534386265646434323836
39623933313261356230666436626330383434323766393632333265353162386533376137326339
62386531353966313432313535386138373565343739303664393437616466306366643136643438
39313938393764653538356334653232313561326135356332633833363163616262383563326262
63383731323231353638666439393035666630306134666336356538306438373739656335383130
30613333616666303739643466366638666637383736303635643639313037616136666533313862
38626636633138303436323734666632306164363566663665623531316561623463643336353432
39313330346365643437386135663661396165323066316463383662653730613662633431373036
61653435636138623937303638666664623066633730363431336563376533363138623566313338
37636437376262333131313261333436383830643330363239613564636235363538613139343632
61653961626663373164393430333663396238343061356466306534646432323338356166353337
34313434303938636334643436333933376661653239393336633730656130393630373539323538
66666638633362623138373633623038326439343030616530303866626433633462386432323562
33313431623139383831653763363865316233636561333131313338303763356338303438666131
62643861383636326362623664633937636663303462386130646237343861633466333834616564
66633935666139623865623133623034356335626138343636333833306166333433323062653134
39336265663138396332316434643939653463386565363635633631326539323637343563616161
33353631383332363630633966396336656333363833366566306339663535663634316238326631
39623466623239643536656338613264313239363639333535613039626265666265633231306639
36363337363330653166663033386430616135616636303231353730393633653437303939396237
39336463313361653264356365333531626565326463643639353633336235313432623864343066
66343934313430363537343237343230373935303031376636313931303761613935353462353762
61313264306337646365663766656462636365373531636361316536656234623264666161613761
32653765656138393536656463323131393632646333366538376233346632383464326234396266
64613138356539643863303331373030393533313132363438306337356163626266646431663938
61666263653865393635633163636231613938623833393362356461356461333134316537363438
31373633396537613437366635356164666537363065363564633839613962633066646639646132
35326438363331613639323238656364623766393662343035663139356639393637643363383534
37306362393434366266623033313833353666616439353665363338633638653135653137353564
63326164323063376563313461656563333235376564656132646233386538373639386436373162
37663063616663616332613732386363356132393762366633363232333834626232646466656537
61613030313261346333353735343330643066313034303034646631383930313666363664336537
3866
monitoring_service_url: "stats.admin.lqdn.fr"
monitoring_service_url: "stats.test.lqdn.fr"
---
# Qui ? ( Nom du serveur )
lqdncloud:
hosts:
cloud.lqdn.fr:
lqdnsso:
hosts:
sso.lqdn.fr:
lqdntest:
hosts:
test.lqdn.fr:
lqdnmatrix:
hosts:
matrix.lqdn.fr:
lqdnadmin:
hosts:
admin.lqdn.fr:
lqdnbot:
hosts: