cbrunnkvist.ansistrano-symfony-deploy

ansistrano-symfony-deploy

État de construction

Un ensemble de tâches Ansible pour déployer des applications PHP développées avec le framework Symfony (incl. flex) sur des serveurs *nix de manière "Capistrano" (versions, partagé, actuel->versions/X).

Ce rôle est essentiellement une collection des tâches d'installation les plus courantes (c'est-à-dire obtenir un exécutable Composer, installer des dépendances et un autoloader, effectuer la mise en cache, déployer des migrations, etc.). Il ne traite pas de la mise en place des structures de répertoire ni du transfert de fichiers sur vos serveurs, cette partie étant gérée par le rôle plus générique ansistrano-deploy.

La manière dont cela est mis en œuvre est en définissant quelques variables ansistrano_(before|after)_X (voir la documentation d'ansistrano pour plus de détails).

Exigences

En raison des limitations de la version actuelle d'Ansible, il est nécessaire que ansistrano-symfony-deploy et ansistrano-deploy partagent le même répertoire parent. C'est normalement le cas, donc cela ne devrait pas poser de problème tant que vous installez via ansible-galaxy.

Les tâches ne fonctionneront probablement pas pour les hôtes cibles Windows (non testé).

Variables de rôle

Les variables defaults déclarées dans ce module :

symfony_env: prod
symfony_php_path: php # L'exécutable PHP à utiliser pour toutes les tâches en ligne de commande

symfony_console_path: 'app/console' # Si vous utilisez Symfony 3+, cela devrait être 'bin/console'

symfony_run_composer: true
symfony_composer_path: "{{ ansistrano_deploy_to }}/composer.phar"
symfony_composer_options: '--no-dev --optimize-autoloader --no-interaction'
symfony_composer_self_update: true # Toujours tenter une auto-mise à jour de Composer
symfony_composer_version: 1.10.1 # Installer une version spécifique de Composer. Si cette variable n'est pas définie, la dernière version stable est installée

symfony_run_assets_install: true
symfony_assets_options: '--no-interaction'

symfony_run_assetic_dump: true
symfony_assetic_options: '--no-interaction'

symfony_run_cache_clear_and_warmup: true
symfony_cache_options: ''

###############################################################################
symfony_run_doctrine_migrations: false
symfony_doctrine_options: '--no-interaction'

symfony_run_mongodb_schema_update: false
symfony_mongodb_options: ''

Hooks

Ce rôle prend en charge des hooks comme ansistrano avant et après chaque tâche

ansistrano_symfony_before_composer_tasks_file
ansistrano_symfony_after_composer_tasks_file

ansistrano_symfony_before_assets_tasks_file
ansistrano_symfony_after_assets_tasks_file

ansistrano_symfony_before_assetic_tasks_file
ansistrano_symfony_after_assetic_tasks_file

ansistrano_symfony_before_cache_tasks_file
ansistrano_symfony_after_cache_tasks_file

ansistrano_symfony_before_doctrine_tasks_file
ansistrano_symfony_after_doctrine_tasks_file

ansistrano_symfony_before_mongodb_tasks_file
ansistrano_symfony_after_mongodb_tasks_file

En plus de cela, veuillez vous référer également à la liste des variables utilisées par ansistrano.

Remarque concernant les migrations de schéma ORM/ODM

Les migrations de schéma de base de données ne peuvent généralement PAS être exécutées en parallèle sur plusieurs hôtes ! Pour cette raison, les options symfony_run_doctrine_migrations et symfony_run_mongodb_schema_update sont toutes deux désactivées par défaut.

Pour contourner l'exécution parallèle, vous pouvez faire ce qui suit :

  1. Spécifiez votre propre ansistrano_before_symlink_tasks_file, peut-être en utilisant celui de ce projet comme modèle (regardez dans cbrunnkvist.ansistrano-symfony-deploy/config/steps/).
  2. Choisissez l'une des approches suivantes :
  • (a) Organisez les hôtes en groupes de manière à ce que la tâche ne s'exécute que sur le premier hôte d'un groupe : when: groups['www-production'][0] == inventory_hostname
  • (b) Utilisez run_once: true peut-être avec delegate_to: some_primary_host (Docs : Délégation de playbook)

Dépendances

L'installation depuis la ligne de commande via ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy devrait récupérer le rôle externe en tant que dépendance, donc aucune étape supplémentaire n'est nécessaire.

Exemple de playbook

En tant que minimum requis, vous devez probablement déclarer les variables ansistrano_deploy_from et ansistrano_deploy_to dans votre play. Ansistrano utilise par défaut rsync depuis un répertoire local (encore une fois, consultez la documentation d'ansistrano).

Supposons qu'il y ait un my-app-infrastructure/deploy.yml :

---
- hosts: all
  gather_facts: false
  vars:
    ansistrano_deploy_from: ../my-project-checkout
    ansistrano_deploy_to: /home/app-user/my-project-deploy/
    ansistrano_before_symlink_tasks_file: "{{playbook_dir}}/config/app_specific_setup.yml"
  roles:
    - cbrunnkvist.ansistrano-symfony-deploy

Ce playbook doit être exécuté comme n'importe quel autre, c'est-à-dire ansible-playbook -i some_hosts_file deploy.yml.

Il est probablement judicieux de garder vos tâches de préparation système ponctuelles dans un playbook séparé, par exemple my-app-infrastructure/setup.yml.

Licence

MIT

Informations sur l'auteur

  • ansistrano-symfony-deploy, écrit par Conny Brunnkvist cbrunnkvist@gmail.com
  • Le rôle sous-jacent est maintenu par l'équipe ansistrano-deploy
  • Une partie du code a été prise/inspirée par le rôle symfony2-deploy de l'équipe Servergrove
À propos du projet

Common post-deploy tasks for Symfony projects

Installer
ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy
Licence
mit
Téléchargements
43.6k
Propriétaire