======= Service agir.chapril.org =======
Redirection vers le projet Chapril dans le Redmine de l'April.
===== Déploiement =====
==== DNS ====
Configuration du fichier DNS :
=(^-^)=root@dns:/etc/bind/zones/masters# git diff
diff --git a/bind/zones/masters/chapril.org b/bind/zones/masters/chapril.org
index a5368c5..cb20fcd 100644
--- a/bind/zones/masters/chapril.org
+++ b/bind/zones/masters/chapril.org
@@ -3,7 +3,7 @@
$TTL 1h
@ IN SOA fip.chapril.org. hostmaster.chapril.org. (
- 2019110400 ; Serial - YYYYMMDDnn
+ 2020010801 ; Serial - YYYYMMDDnn
4h ; Refresh
1h ; Retry
1w ; Expire
@@ -50,6 +50,10 @@ icinga2 CNAME galanga.april.org.
backup CNAME icinga2
myip CNAME icinga2
+; redirections
+agir CNAME fip
+
; XMPP (old)
muc.xmpp CNAME xmpp
echo.xmpp CNAME xmpp
Activation :
rndc reload chapril.org in external
==== Bastion ====
Configuration du certificat SSL :
=(^-^)=root@bastion:/etc# git diff dehydrated/domains.txt
diff --git a/dehydrated/domains.txt b/dehydrated/domains.txt
index b53ff9c..662eb8a 100644
--- a/dehydrated/domains.txt
+++ b/dehydrated/domains.txt
@@ -15,3 +15,5 @@ pad.chapril.org
valise.chapril.org
xmpp.chapril.org upload-xmpp.chapril.org
drop.chapril.org
+agir.chapril.org
Activation :
dehydrated -c
Configuration du serveur web sur la vm bastion :
=(^-^)=root@bastion:/etc/nginx/sites-available# cat agir.chapril.org
server {
listen 80;
listen [::]:80;
server_name agir.chapril.org;
access_log /var/log/nginx/agir.chapril.org/agir.chapril.org.access_log;
error_log /var/log/nginx/agir.chapril.org/agir.chapril.org.error_log;
# include /etc/nginx/custom_50x;
include /etc/nginx/acme-challenge;
include /etc/nginx/sexy-chapril;
include /etc/nginx/force-ssl.conf;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl on;
server_name agir.chapril.org;
access_log /var/log/nginx/agir.chapril.org/agir.chapril.org.access_log;
error_log /var/log/nginx/agir.chapril.org/agir.chapril.org.error_log;
# include /etc/nginx/custom_50x;
ssl_certificate /var/lib/dehydrated/certs/agir.chapril.org/fullchain.pem;
ssl_certificate_key /var/lib/dehydrated/certs/agir.chapril.org/privkey.pem;
include /etc/nginx/acme-challenge;
include /etc/nginx/sexy-chapril;
return 301 https://agir.april.org/projects/chapril/issues;
}
Création du dossier de logs :
mkdir /var/log/nginx/agir.chapril.org/
ln -sf /etc/nginx/sites-available/agir.chapril.org /etc/nginx/sites-enabled/
Activation :
nginx -t
systemctl reload nginx
Création du dossier de logs :
mkdir /var/log/nginx/agir.chapril.org/
ln -sf /etc/nginx/sites-available/agir.chapril.org /etc/nginx/sites-enabled/
Activation :
nginx -t
systemctl reload nginx
==== Supervision ====
Monitoring ajouté :
=(^-^)=root@admin:/etc/icinga2/zones.d/master/cluster# git diff
diff --git a/icinga2/zones.d/master/cluster/bastion.conf b/icinga2/zones.d/master/cluster/bastion.conf
index da31c6c..53127e4 100644
--- a/icinga2/zones.d/master/cluster/bastion.conf
+++ b/icinga2/zones.d/master/cluster/bastion.conf
@@ -25,6 +25,20 @@ object Host "bastion.cluster.chapril.org" {
disk_partitions = "/tmp"
}
+ vars.http_vhosts["agir.chapril.org redirection"] = {
+ http_vhost = "agir.chapril.org"
+ http_ssl = true
+ http_uri = "/"
+ http_expect = "HTTP/1.1 301 Moved Permanently,Location: https://agir.april.org/projects/chapril/issues"
+ }
/* Define notification mail attributes for notification apply rules in `notifications.conf`. */
vars.notification["mail"] = {
/* The UserGroup `icingaadmins` is defined in `users.conf`. */
===== Compte pour la création de note Redmine =====
Dans le Redmine :
* un compte ''chagirbot'' a été créé ;
* un rôle ''Bot'' a été créé avec uniquement le droit de voir les demandes et d'ajouter une note ;
* le compte ''chagirbot'' a été ajouté au projet Chapril avec le rôle ''Bot''.
* Une clé d'API Redmine a été générée : se connecter sur https://agir.april.org avec le compte chagirbot puis cliquer sur « Mon compte » et aller dans « Clé d'accès API »
Sur les vm, la clé est disponible dans le fichier ''/etc/chagirbot/agiraprilorg.conf''.
===== Chagirbot (Redminebot) =====
Redminebot (agirbot sur le réseau Freenode) est un bot qui analyse régulièrement les fichiers Atom de ''agir.april.org'' pour afficher sur un canal IRL l'activité d'un projet.
À l'origine dédié à gDTC sur #gdtc, il est utilisé pour le projet admin sur #april-admin et maintenant pour le Chapril sur #april-chapril.
Il a été écrit en python après grosse réécriture du script redmine IRC bot.
Agirbot possède un dépôt Git sur Agir : https://agir.april.org/projects/admins/repository/agirbot
==== Déploiement ====
Sur Freenode IRC, déclarer (register) le nickname ''chagirbot'' auprès de ''NickServ'' avec un mot de passe.
08:17 -NickServ(NickServ@services.)-
08:18 register xxxxxxxxx chagirbot@chapril.org
08:18 -NickServ(NickServ@services.)- An email containing nickname activation instructions has been sent to chagirbot@chapril.org.
08:18 -NickServ(NickServ@services.)- If you do not complete registration within one day, your nickname will expire.
08:18 -NickServ(NickServ@services.)- chagirbot is now registered to chagirbot@chapril.org, with the password JxQwAKjwC3HFWTfzwiq7.
08:18 -NickServ(NickServ@services.)-
08:18 -NickServ(NickServ@services.)- For frequently-asked questions about the network, please see the
08:18 -NickServ(NickServ@services.)- Knowledge Base page (http://freenode.net/kb/all). Should you need more
08:18 -NickServ(NickServ@services.)- help you can /join #freenode to find network staff.
Créer un utilisateur ''chagirbot'' :
adduser --system --group --home /srv/chagirbot --shell /bin/false chagirbot
Installation des dépendances de paquets:
apt-get install python-iso8601 python-twisted python-dateutil python-feedparser
Clonage :
cd /srv/chagirbot/
git clone april@agir.cluster.april.org:/srv/git/agirbot git
Définition de l'exécutable :
cd /srv/chagirbot/
mkdir bin
cd bin
ln -s ../git/redminebot.py chagirbot.py
Déploiement du fichier de configuration :
cp /srv/chagirbot/git/redminebot.conf /etc/chagirbot/chagirbot.conf
cd /srv/chagirbot/
mkdir conf
cd conf
ln -s /etc/chagirbot/chagirbot.conf /etc/chagirbot/conf/
Adapter le fichier ''/etc/chagirbot/chagirbot.conf'' :
* mettre le mot de passe IRC du nickname bot ;
* définir projet ''chapril'' et canal ''#april-chapril''.
Définir le service dans systemd :
cp /srv/chagirbot/git/redminebot.service /etc/systemd/system/
ln -s /etc/systemd/system/chagirbot.service /srv/chagirbot/conf/
Adapter le fichier ''/etc/systmd/system/chagirbot.service'' avec :
* le bon chemin ;
* le bon compte ;
* le bon groupe ;
* le chemin du fichier de configuration passé en paramètre ExecStart.
Configurer le lancement du service au boot :
(April) root@bots:~# systemctl enable chagirbot
Created symlink /etc/systemd/system/multi-user.target.wants/chagirbot.service → /etc/systemd/system/chagirbot.service.
Ajouter une sonde dans Icinga2 (''/etc/icinga2/zones.d/master/cluster/admin.conf'') pour valider le bon fonctionnement du bot :
vars.process["Chagirbot"] = {
procs_command = "python3"
procs_argument = "chagirbot.py"
procs_critical = "1:1"
}
==== Logs ====
Des logs sont consultables via SystemD :
journalctl -f -u chagirbot