Cette méthode utilise Ansible pour installer CPC sur une machine (distante ou non) à l'aide de containers docker.
- Debian
- Ansible 2.2+
- Docker non installé (la version des repos debian n'est pas la bonne)
Conseil : utiliser un virtualenv, par exemple
$ sudo apt install virtualenvwrapper
$ mkvirtualenv cpc
$ pip install "ansible>=2.2"
- docker, docker-compose (avec un alias dans /usr/local/bin)
pip install docker
dans le virtualenv- utiliser les books avec
-e dont_touch_my_docker=true -e use_debian_stretch=true
- utiliser les books avec
-e use_ubuntu=true
Les variables suivantes sont disponibles (voir ansible/group_vars/all/main.yml
pour les valeurs par défaut).
Note: les variables marquées [U] doivent avoir une valeur unique si plusieurs instances sont installées sur la même machine.
cpc_domain
[U] : nom de domaine de cette instancecpc_domain_aliases
: liste d'alias à configurercpc_instance_name
[U] : nom de l'instance (cpc
par défaut)cpc_user
: utilisateur Unix (cpc
par défaut)cpc_home
[U] : répertoire hébergeant le repository et les fichiers de contrôle (/opt/cpc
par défaut)cpc_senat
: booléen, instance de type NosSénateurs (false
par défaut)cpc_repo
: URL du repository gitcpc_version
: version (branche, tag, commit...) du git à utiliser (master
ounossenateurs.fr
par défaut, en fonction de la valeur decpc_senat
)cpc_dump
: chemin local d'un dump (données seulement) à charger, au format SQL gzippé
cpc_port_web
[U] : port d'écoute pour apache sur le container webcpc_port_phpmyadmin
[U] : port d'écoute pour phpmyadmincpc_port_mysql
[U] : port d'écoute mysqlcpc_port_memcached
[U] : port d'écoute Memcachedcpc_port_solr
[U] : port d'écoute Solr
cpc_memcached
: booléen, activer ou non Memcachedcpc_memcached_limit
: mémoire maximale utilisée par Memcached (des suffixes peuvent être utilisés, par exemple 100M ou 1G)cpc_solr
: booléen, activer ou non Solrcpc_admin_ips
: liste des IP autorisées pour/frontend_dev.php/
cpc_php_cli_memory_limit
: limite mémoire PHP pour les scripts en ligne de commandecpc_php_web_memory_limit
: limite mémoire PHP depuis Apachecpc_php_show_errors
: booléen, afficher ou non les erreurs PHPcpc_enable_cronjobs
: booléen, créer ou non les jobs cron
Note: ces variables ne sont utiles que si cpc_senat == false
.
cpc_leg_options
: dictionnaire avec les clés suivanteslegislature
: numéro de législaturedebut_legislature
: date de début de la législature (YYYY-MM-DD)fin_legislature
: booléen, législature terminée ou nonhost_prev
: hostname de l'instance pour la législature précédentehost_next
: hostname de l'instance pour la législature suivante
cpc_analytics_id
: ID Google analyticscpc_piwik_domain
: domaine Piwikcpc_piwik_id
: ID Piwik
cpc_ssl_cert
: chemin distant vers le certificat SSLcpc_ssl_key
: chemin distant vers la clé privée serveur pour le certificat SSLcpc_ssl_chain
: chemin distant vers la chaine complête de certificats SSL
cpc_smtp_host
: hostname pour l'envoi des mailscpc_smtp_port
: port pour l'envoi des mailscpc_spool_mails
: booléen, activer ou non le spooling mail
Depuis le répertoire ansible
exécuter le playbook local_install.yml
:
ansible-playbook -i inventories/local -b books/local_install.yml
Si vous souhaitez passer des valeurs différentes à certaines variables, ajouter -e 'variable=valeur'
pour chacune d'entre elles. Vous pouvez aussi indiquer leurs valeurs dans ansible/group_vars/local/main.yml
.
Si vous souhaitez charger un dump de base de données, téléchargez-le localement puis passez son chemin via la variable cpc_dump
:
ansible-playbook -i inventories/local -b books/local_install.yml -e 'cpc_dump=/path/to/dump.sql.gz'
Vous pouvez alors accéder à :
- CPC depuis http://localhost:8001/ (suivant la variable
cpc_port_web
) - PHPMyAdmin depuis http://localhost:8002/ (suivant la variable
cpc_port_phpmyadmin
) - MySQL directement sur localhost:8003 (suivant la variable
cpc_port_mysql
), par exemple avecmysql -P 8003 --default-character-set=utf8 -u cpc -pcpc cpc
(note: si la machine hôte n'a pas de client MySQL installé, il est aussi possible d'utiliser celui installé sur le container web - voir ci-dessous)
Par défaut, memcache, solr, piwik sont désactivés lors d'une installation locale. Si nécessaire, définissez les variables correspondantes et relancez le playbook.
Il est possible d'exécuter une commande sur un container directement en utilisant docker-compose
. Un alias est automatiquement créé lors de l'installation permettant d'appeler docker-compose
avec les bons paramètres pour l'instance installée :
$ # Lancer un shell sur le container web
$ sudo dc-dev_local exec web bash
$ # Lancer le client MySQL depuis le container web
$ sudo dc-dev_local exec web mysql -h database --default-character-set=utf8 -u cpc -pcpc cpc
Note : remplacer dev_local
par la valeur de la variable cpc_instance_name
si elle a été modifiée.
Le répertoire /opt/cpc/repo
(suivant la variable cpc_home
) est monté dans le container web : toute modification dans ce répertoire est directement prise en compte.
$ # Tous les services
$ sudo dc-dev_local logs
$ # Container web seul
$ sudo dc-dev_local logs web
$ # Options follow/tail 100 lignes
$ sudo dc-dev_local logs -f -t 100 web
Disposer d'un accès SSH sur la machine avec un user pouvant exécuter n'importe quelle commande en sudo
(on utilisera monuser
dans la suite de cette documentation).
Créer un fichier d'inventaire ansible/inventories/monserveur
avec le contenu suivant :
[remote]
monserveur ansible_host=monserveur.example.com ansible_user=monuser
[all]
monserveur
Créer un fichier de configuration ansible/host_vars/monserveur/main.yml
sur le modèle ci-dessous.
Attention : si vous installez plusieurs instances sur la même machine, tenez compte des variables devant avoir une valeur différente (marquées [U] dans la section « Configuration » ci-dessus).
---
variable1: valeur1
variable2: valeur2
Depuis le répertoire ansible
exécuter le playbook remote_install.yml
:
ansible-playbook -i inventories/monserveur -b books/remote_install.yml
Un alias permettant l'appel de docker-compose
avec les bons paramètres est automatiquement créé avec le nom de l'instance (la variable cpc_instance_name
). Par exemple, pour une instance nommée nd2017
:
$ sudo dc-nd2017 exec web php symfony cc
$ sudo dc-nd2017 logs -f -t 100 solr