cbrunnkvist.ansistrano-symfony-deploy

ansistrano-symfony-deploy

Buildstatus

Eine Sammlung von Ansible-Aufgaben für das Bereitstellen von PHP-Anwendungen, die mit dem Symfony-Framework (einschließlich Flex) entwickelt wurden, auf *nix-Servern in einer "Capistrano"-Manier (Releases, Shared, Current->Releases/X).

Diese Rolle ist mehr oder weniger nur eine Sammlung der häufigsten Nachinstallationsaufgaben (d.h. das Erhalten einer Composer ausführbaren Datei, Installieren von Abhängigkeiten und Autoloader, Cache-Vorwärmung, Durchführen von Migrationen usw.). Sie kümmert sich nicht um das Einrichten der Verzeichnisstrukturen oder das Übertragen von Dateien auf Ihre Server - dieser Teil wird von der allgemeineren Rolle ansistrano-deploy übernommen.

Die Implementierung erfolgt durch die Definition einiger der ansistrano_(before|after)_X Variablen (siehe die ansistrano-Dokumentation für Details).

Anforderungen

Aufgrund von Einschränkungen in der aktuellen Version von Ansible ist es erforderlich, dass ansistrano-symfony-deploy und ansistrano-deploy das gleiche übergeordnete Verzeichnis teilen. Dies wird normalerweise der Fall sein und sollte kein Problem darstellen, solange Sie über ansible-galaxy installieren.

Die Aufgaben werden wahrscheinlich nicht für Windows-Zielhosts funktionieren (ungetestet).

Rollenvariablen

Die im Modul deklarierten defaults Variablen:

symfony_env: prod
symfony_php_path: php # Das PHP-Executable, das für alle Aufgaben in der Befehlszeile verwendet werden soll

symfony_console_path: 'app/console' # Wenn Sie Symfony 3+ verwenden, sollte dies 'bin/console' sein

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 # Immer versuchen, Composer selbst zu aktualisieren
symfony_composer_version: 1.10.1 # Bestimmte Composer-Version installieren. Wenn diese Variable nicht gesetzt ist, wird die neueste stabile Version installiert

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

Diese Rolle unterstützt ansistrano-ähnliche Hooks vor und nach jeder Aufgabe

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

Zusätzlich dazu verweisen Sie bitte auch auf die Liste der von ansistrano verwendeten Variablen.

Hinweis zu ORM/ODM-Schema-Migrationen

Datenbankschema-Migrationen können normalerweise NICHT parallel über mehrere Hosts ausgeführt werden! Aus diesem Grund sind die Optionen symfony_run_doctrine_migrations und symfony_run_mongodb_schema_update standardmäßig deaktiviert.

Um die parallele Ausführung zu umgehen, können Sie Folgendes tun:

  1. Geben Sie Ihre eigene ansistrano_before_symlink_tasks_file an, vielleicht mit der in diesem Projekt als Vorlage (sehen Sie im cbrunnkvist.ansistrano-symfony-deploy/config/steps/).
  2. Wählen Sie einen der folgenden Ansätze:
  • (a) Organisieren Sie Hosts in Gruppen, sodass die Aufgabe nur auf dem ersten Host in einer Gruppe ausgeführt wird: when: groups['www-production'][0] == inventory_hostname
  • (b) Verwenden Sie run_once: true, vielleicht mit delegate_to: some_primary_host (Dokumente: Playbook-Delegation)

Abhängigkeiten

Die Installation von der Kommandozeile über ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy sollte die externe Rolle als Abhängigkeit herunterladen, sodass kein zusätzlicher Schritt notwendig ist.

Beispiel-Playbook

Als Minimum müssen Sie wahrscheinlich die Variablen ansistrano_deploy_from und ansistrano_deploy_to in Ihrem Play deklarieren. Ansistrano verwendet standardmäßig rsync von einem lokalen Verzeichnis (siehe erneut die ansistrano-Dokumentation).

Angenommen, es gibt ein 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

Dieses Playbook sollte wie jedes andere ausgeführt werden, d.h. ansible-playbook -i some_hosts_file deploy.yml.

Es macht wahrscheinlich Sinn, Ihre einmaligen Systemvorbereitungsaufgaben in einem separaten Playbook zu halten, z.B. my-app-infrastructure/setup.yml.

Lizenz

MIT

Autorinformationen

  • ansistrano-symfony-deploy, geschrieben von Conny Brunnkvist cbrunnkvist@gmail.com
  • Die zugrunde liegende Rolle wird vom Team ansistrano-deploy gewartet
  • Ein Teil des Codes wurde von/inspirierend von der Rolle symfony2-deploy vom Servergrove-Team übernommen
Über das Projekt

Common post-deploy tasks for Symfony projects

Installieren
ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy
Lizenz
mit
Downloads
43.6k