-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Setup client deployment #48
Conversation
98511a2
to
786d5b8
Compare
4764d68
to
6ae7c9a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je n'y connais pas grand chose à Ansible, mais après avoir fait une passe de relecture, ça m'a l'air solide 👍
Merci !
🚢
Pour info il y a un soucis de formatting sur |
Test sur stagingProvisioning (installation de Node, etc) $ make provision-staging
cd ops && make provision-staging
make[1]: Entering directory '/home/florimond/dev/prj-catalogue/catalogage-donnees/ops'
../venv/bin/ansible-playbook -i ansible/hosts_staging -e @ansible/secrets/staging.enc --vault-password-file ansible/secrets/staging.vault-password -t provision ansible/playbook.yml
PLAY [web] *********************************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************************
ok: [web1-staging]
TASK [common : Update system] **************************************************************************************************************************************************************************
changed: [web1-staging]
TASK [pyenv : Install build requirements] **************************************************************************************************************************************************************
ok: [web1-staging]
TASK [pyenv : Clone pyenv] *****************************************************************************************************************************************************************************
ok: [web1-staging]
TASK [pyenv : Set path to pyenv binary] ****************************************************************************************************************************************************************
ok: [web1-staging]
TASK [pyenv : Create .pyenvrc] *************************************************************************************************************************************************************************
ok: [web1-staging]
TASK [pyenv : Set path to .bashrc] *********************************************************************************************************************************************************************
ok: [web1-staging]
TASK [pyenv : Load pyenv in .bashrc] *******************************************************************************************************************************************************************
ok: [web1-staging]
TASK [pyenv : Install interpreter] *********************************************************************************************************************************************************************
ok: [web1-staging]
TASK [pyenv : Get current global version] **************************************************************************************************************************************************************
ok: [web1-staging]
TASK [pyenv : Set pyenv_global_active fact] ************************************************************************************************************************************************************
ok: [web1-staging]
TASK [pyenv : Check if 'system' version is available] **************************************************************************************************************************************************
ok: [web1-staging]
TASK [pyenv : Remove 'system' from pyenv_global] *******************************************************************************************************************************************************
skipping: [web1-staging]
TASK [pyenv : Set pyenv global version to '3.8.9 system'] **********************************************************************************************************************************************
skipping: [web1-staging]
TASK [nvm : Install nvm] *******************************************************************************************************************************************************************************
changed: [web1-staging]
TASK [nvm : Install Node binary] ***********************************************************************************************************************************************************************
changed: [web1-staging]
TASK [nvm : Get node binary path] **********************************************************************************************************************************************************************
changed: [web1-staging]
TASK [nvm : Set node_bin_path fact] ********************************************************************************************************************************************************************
ok: [web1-staging]
TASK [nvm : Get npm binary path] ***********************************************************************************************************************************************************************
changed: [web1-staging]
TASK [nvm : Set npm_bin_path fact] *********************************************************************************************************************************************************************
ok: [web1-staging]
TASK [nvm : Create node bin symlink] *******************************************************************************************************************************************************************
changed: [web1-staging]
TASK [nvm : Create npm bin symlink] ********************************************************************************************************************************************************************
changed: [web1-staging]
TASK [common : Ensure nginx is installed and up to date] ***********************************************************************************************************************************************
ok: [web1-staging]
TASK [common : Ensure supervisor is installed] *********************************************************************************************************************************************************
ok: [web1-staging]
PLAY RECAP *********************************************************************************************************************************************************************************************
web1-staging : ok=22 changed=7 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
make[1]: Leaving directory '/home/florimond/dev/prj-catalogue/catalogage-donnees/ops' Deploy : $ EXTRA_OPTS="-e env_branch=fm/client-ops" make deploy-staging
cd ops && make deploy-staging
make[1]: Entering directory '/home/florimond/dev/prj-catalogue/catalogage-donnees/ops'
../venv/bin/ansible-playbook -i ansible/hosts_staging -e @ansible/secrets/staging.enc --vault-password-file ansible/secrets/staging.vault-password -t deploy ansible/playbook.yml -e env_branch=fm/client-ops
PLAY [web] *********************************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************************
ok: [web1-staging]
TASK [common : Ensure nginx is running] ****************************************************************************************************************************************************************
ok: [web1-staging]
TASK [common : Ensure supervisor is running] ***********************************************************************************************************************************************************
ok: [web1-staging]
TASK [web : Ensure Nginx site configuration is up to date] *********************************************************************************************************************************************
changed: [web1-staging]
TASK [web : Ensure Nginx site is default] **************************************************************************************************************************************************************
ok: [web1-staging]
TASK [web : Git checkout fm/client-ops] ****************************************************************************************************************************************************************
changed: [web1-staging]
TASK [web : Check if .env exists] **********************************************************************************************************************************************************************
ok: [web1-staging]
TASK [web : Ensure .env exists] ************************************************************************************************************************************************************************
skipping: [web1-staging]
TASK [web : Ensure database URL is present in .env file] ***********************************************************************************************************************************************
ok: [web1-staging]
TASK [web : Get Python binary path] ********************************************************************************************************************************************************************
changed: [web1-staging]
TASK [web : Set python_bin_path fact] ******************************************************************************************************************************************************************
ok: [web1-staging]
TASK [web : Ensure Python dependencies are installed] **************************************************************************************************************************************************
ok: [web1-staging]
TASK [web : Ensure Node dependencies are installed] ****************************************************************************************************************************************************
changed: [web1-staging]
TASK [web : Ensure build is up to date] ****************************************************************************************************************************************************************
changed: [web1-staging]
TASK [web : Ensure migrations are up to date] **********************************************************************************************************************************************************
changed: [web1-staging]
TASK [web : Ensure supervisor configuration is up to date] *********************************************************************************************************************************************
changed: [web1-staging]
TASK [web : Ensure client is running] ******************************************************************************************************************************************************************
changed: [web1-staging]
TASK [web : Ensure server is running] ******************************************************************************************************************************************************************
ok: [web1-staging]
RUNNING HANDLER [common : reload nginx] ****************************************************************************************************************************************************************
changed: [web1-staging]
RUNNING HANDLER [common : reload supervisor] ***********************************************************************************************************************************************************
changed: [web1-staging]
PLAY RECAP *********************************************************************************************************************************************************************************************
web1-staging : ok=19 changed=10 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
make[1]: Leaving directory '/home/florimond/dev/prj-catalogue/catalogage-donnees/ops' Résultat : http://51.159.187.137/
=> Je viens de push un commit, mais je crois qu'il faudrait que je gère le "déplacement de l'API sur Edit : voir #51, je vais rollback le dernier commit ici. |
569d4d9
to
45c445c
Compare
@magopian J'ai testé de déployer sur staging. Il y a un problème avec le Sur l'instance, lors du deploy, j'obtenais une erreur bizarre du type En l'absence de doc sur le déploiement par SvelteKit j'ai utilisé ce fichier Edit : petit morceau d'investigation en plus : d'après la doc Ansible au deploy on exécute l'équivalent de
Ça se reproduit en local : un Hé bien... On dirait bien 😱 Preuve en local :
$ ps -a
PID TTY TIME CMD
2197 tty2 01:18:44 Xorg
2574 tty2 00:00:00 gnome-session-b
420891 pts/0 00:00:00 npm start
420902 pts/0 00:00:00 sh
420903 pts/0 00:00:00 node
420948 pts/3 00:00:00 ps Maintenant on kill
Et là, catastrophe, $ ps -a
PID TTY TIME CMD
2197 tty2 01:18:46 Xorg
2574 tty2 00:00:00 gnome-session-b
420903 pts/0 00:00:00 node
421351 pts/3 00:00:00 ps Et si j'essaie de La question reste : est-ce que ce comportement est spécifique au setup Svelte, ou est-ce qu'on peut le reproduire sur un bête serveur Express à la mano ? Est-ce qu'en fait je rate qqc de parfaitement évident ? Est-ce que Supervisor est bien sensé arrêter tous les processus enfants ? Tout ça demande vérification. La suite au prochain épisode (lundi) ... |
Eh ben... belle investigation !
La solution semble d'être d'utiliser la commande node directement sans passer par |
La solution semble converger, je lis ça ici aussi : https://stackoverflow.com/questions/46800198/how-can-supervisord-restart-the-npm-start-command-successfully |
OK, testé sur la VM puis sur staging : |
Allez hop, voyons voir ce que ça donne à l'usage ! |
Closes #46
Cette PR étend la configuration Ansible pour déployer le client sur le serveur (en même temps que l'API), incluant :
Testé en local avec la VM de test, déploiement sur staging à venir.