Ce projet contient un playbook et des rôles ansible pour les applications de Regards Citoyens.
Ce playbook suppose :
- L'utilisation de la version 2.0 (ou plus récente) d'ansible
- L'existence sur les machines cible D'un utilisateur 'rcdeploy' qui peut exécuter des commandes en
sudo
sans mot de passe. - Pour l'activation de SSL sur les vhosts Apache, la présence d'une chaine de certificats complête et de la clé privée du serveur sur les machines distantes.
Les applications seront hébergées dans le répertoire /srv
, chacune avec un utilisateur dédié, sans mot de passe.
Pour vérifier le fonctionnement d'ansible et la connexion aux cibles, exécuter depuis la racine de ce repository :
ansible all --private-key=CLEPRIVEE -m ping
Ansible doit répondre avec un "ping: pong" pour chaque cible.
ansible-playbook --private-key=CLEPRIVEE site.yml
Les groupes de serveurs suivants sont définis :
all_servers
: contient toutes les machines ; y seront exécutés les rôlesapache
,common
etmunin-node
;git_server
: contient le serveur hébergeant gogs ; le rôlegogs
y est exécuté ;lfdl_server
: contient le serveur hébergeant La Fabrique de la Loi ; le rôlelafabrique
y est exécuté ;munin_master
: contient le serveur maître Munin ; le rôlemunin-master
y est exécuté ;piwik_server
: contient le serveur hébergeant Piwik ; le rôlepiwik
y est exécuté ;pad_server
: contient le serveur hébergeant le pad ; le rôlepad
y est exécuté ;parlapi_server
: contient le serveur hébergeant ParlAPI ; le rôleparlapi
y est exécuté.
Note : les groupes nommés *_server
(au singulier) ainsi que munin_master
sont normalement destinés à ne contenir qu'une machine, mais fonctionnent aussi bien avec plusieurs serveurs.
Ces rôles permettent l'installation des applications créées par Regards Citoyens.
Dépend de : common, apache
Ce rôle installe la fabrique de la loi.
Variables :
lafabrique_home
(/srv/lafabrique
) : homedir pour l'user lafabriquelafabrique_domain
(www.lafabriquedelaloi.fr
) : domainelafabrique_api_repo
(git://github.com/regardscitoyens/the-law-factory-parser.git
) : repo git pour l'apilafabrique_api_branch
(master
) : branche git pour l'apilafabrique_www_repo
(git://github.com/regardscitoyens/the-law-factory.git
) : repo git pour le frontendlafabrique_www_branch
(css-refactor
) : branche git pour le frontendlafabrique_ssl_cert
(non défini) : chemin distant vers le certificat SSL à utiliser ; s'il est indéfini, SSL ne sera pas utilisé sur le vhostlafabrique_ssl_chain
(non défini) : chemin distant vers la chaine de certificats à utiliserlafabrique_ssl_key
(non défini): chemin distant vers la clé privée serveur pour le certificat SSL
Créer le fichier de procédure (dossier.csv
) et définir les deux variables suivantes :
lafabrique_ajout_texte
: référence courte du texte (ex:pjl15-235
oupjl15-renseignement
)lafabrique_ajout_dossier
: chemin vers le fichier de procédure à utiliser
Ces rôles permettent l'installation de services tiers utilisés par Regards Citoyens ou par les applications.
Variables communes :
contact_email
([email protected]
) : e-mail de contact utilisé dans plusieurs applications
Installe apache, active quelques modules utiles et désactive le site par défaut.
Variables :
apache_default_redirect
(https://www.regardscitoyens.org/
) : redirection utilisée pour tout vhost inconnu (et le site par défaut)
Installe des paquets utiles et crée un groupe commun 'rcapps'.
Dépend de : go, mariadb
Installe gogs et configure un reverse-proxy apache pour y accéder avec un vhost.
Attention : après la première exécution de ce rôle sur une cible, accéder immédiatement à l'interface Web de gogs pour définir le compte utilisateur et ainsi désactiver l'interface d'installation.
Variables :
gogs_title
(Git Regards Citoyens
) : titre de l'appligogs_home
(/srv/gogs
) : homedir pour l'user gogsgogs_port
(3000
) : port d'écoute local (interface loopback uniquement)gogs_domain
(git.regardscitoyens.org
) : domainegogs_ssl_cert
(non défini) : chemin distant vers le certificat SSL à utiliser ; s'il est indéfini, SSL ne sera pas activé sur le vhostgogs_ssl_chain
(non défini) : chemin distant vers la chaine de certificats à utilisergogs_ssl_key
(non défini) : chemin distant vers la clé privée serveur pour le certificat SSLgogs_db_name
(gogs
) : nom de la BDD mysqlgogs_db_user
(gogs
) : nom de l'user mysqlgogs_db_pass
(gogs
) : mot de passe mysql
Installe munin et le configure pour récupérer les informations de tous les serveurs ayant le rôle munin-node ; met en place un vhost apache pour accéder aux logs. Si SSL est activé, l'accès aux stats est protégé par authentification HTTP Basic.
Variables :
munin_ssl_cert
(non défini) : chemin distant vers le certificat SSL à utiliser ; s'il est indéfini, SSL ne sera pas activé sur le vhostmunin_ssl_chain
(non défini) : chemin distant vers la chaine de certificats à utilisermunin_ssl_key
(non défini) : chemin distant vers la clé privée serveur pour le certificat SSLmunin_domain
(munin.regardscitoyens.org
) : domaine pour le vhost muninmunin_htpassword
(non défini) : doit être défini lors de la première exécution du rôle avec SSL actif ; définit le mot de passe de l'user rcmunin pour l'authentification HTTPmunin_nodes
(non défini) : permet de spécifier des noeuds monitorés qui ne sont pas dans l'inventory (tous les serveurs dans le groupeall_servers
sont automatiquement monitorés) ; voirroles/munin-master/default/main.yml
pour plus de détails
Installe munin-node et autorise les serveurs ayant le rôle munin-master à y accéder.
Dépend de : mariadb
Installe etherpad-lite et configure un reverse-proxy apache pour y accéder avec un vhost ; permet aussi d'importer les données depuis un etherpad (scala).
Variables :
etherpad_title
(Pad Regards Citoyens
) : titre du padetherpad_home
(/srv/etherpad
) : homedir pour l'user etherpadetherpad_port
(9001
) : port d'écoute local (interface loopback uniquement)etherpad_ssl_cert
(non défini) : chemin distant vers le certificat SSL à utiliser ; s'il est indéfini, SSL ne sera pas activé sur le vhostetherpad_ssl_chain
(non défini) : chemin distant vers la chaine de certificats à utiliseretherpad_ssl_key
(non défini) : chemin distant vers la clé privée serveur pour le certificat SSLetherpad_domain
(pad.regardscitoyens.org
) : domaine du padetherpad_db_name
(etherpad
) : nom de la BDD mysqletherpad_db_user
(etherpad
) : nom de l'user mysqletherpad_db_pass
(etherpad
) : mot de passe mysqletherpad_import
(non défini) : chemin vers un fichier de données à importer ; il doit s'agit d'un dump SQL compressé en XZ. Attention, toute donnée existante sera écrasée de manière irréversible si cette variable est définie.
Dépend de : postgresql
Variables :
parlapi_repo
(git://github.com/regardscitoyens/parlapi.git
) : repository GIT à utiliserparlapi_branch
(master
) : branche GIT à utiliserparlapi_home
(/srv/parlapi
) : homedir pour l'user parlapiparlapi_ssl_cert
(non défini) : chemin distant vers le certificat SSL à utiliser ; s'il est indéfini, SSL ne sera pas activé sur le vhostparlapi_ssl_chain
(non défini) : chemin distant vers la chaine de certificats à utiliserparlapi_ssl_key
(non défini) : chemin distant vers la clé privée serveur pour le certificat SSLparlapi_domain
(www.parlapi.fr
) : domaineparlapi_db_name
(parlapi
) : nom de la BDD mysqlparlapi_db_user
(parlapi
) : nom de l'user mysqlparlapi_db_pass
(parlapi
) : mot de passe mysql
Dépend de : mariadb, php
Installe piwik et configure un reverse-proxy apache pour y accéder avec un vhost.
Variables :
piwik_url
(http://builds.piwik.org/piwik.zip
) : URL de l'archive ZIP de la release piwik à installer.piwik_home
(/srv/piwik
) : homedir pour l'user piwikpiwik_ssl_cert
(non défini) : chemin distant vers le certificat SSL à utiliser ; s'il est indéfini, SSL ne sera pas activé sur le vhostpiwik_ssl_chain
(non défini) : chemin distant vers la chaine de certificats à utiliserpiwik_ssl_key
(non défini) : chemin distant vers la clé privée serveur pour le certificat SSLpiwik_domain
(stats.regardscitoyens.org
) : domaine du padpiwik_db_name
(piwik
) : nom de la BDD mysqlpiwik_db_user
(piwik
) : nom de l'user mysqlpiwik_db_pass
(piwik
) : mot de passe mysql
Ces rôles sont destinés à être utilisés comme dépendance d'un autre rôle.
Installe go depuis la distribution binaire officielle.
Variables :
go_tgz
(go1.6.linux-amd64.tar.gz
) : nom de l'archive tgz à téléchargergo_url
(https://storage.googleapis.com/golang/{{ go_tgz }}
) : URL de l'archive tgz à téléchargergo_home
(/root
) : chemin où télécharger (temporairement) l'archivego_version_target
(go version go1.6 linux/amd64
) : version attendue de go ; sigo version
renvoie autre chose, l'archive téléchargée sera installée.
Installe mariadb.
Installe PHP ainsi que les extensions gd
, geoip
et mysql-nd
.
Installe PostgreSQL