cbrunnkvist.ansistrano-symfony-deploy

ansistrano-symfony-deploy

Status kompilacji

Zestaw zadań Ansible do wdrażania aplikacji PHP opracowanych w frameworku Symfony (w tym flex) na serwery *nix w stylu "Capistrano" (wydania, udostępnione, aktualne->wydania/X).

Ta rola to w zasadzie zbiór najczęściej stosowanych zadań konfiguracyjnych po instalacji (np. uzyskanie pliku wykonywalnego Composer, instalacja zależności, autoloading, wstępne ładowanie cache, wdrażanie migracji itp.). Nie zajmuje się ona sama w sobie konfiguracją struktury katalogów ani przesyłaniem plików na twoje serwery - te zadania są obsługiwane przez bardziej ogólną rolę ansistrano-deploy.

Sposób, w jaki to zostało zaimplementowane, polega na zdefiniowaniu kilku zmiennych ansistrano_(before|after)_X (szczegóły znajdziesz w dokumentacji ansistrano).

Wymagania

Z powodu ograniczeń w obecnej wersji Ansible, konieczne jest, aby ansistrano-symfony-deploy i ansistrano-deploy miały tę samą katalog główny. To będzie standardowy przypadek, więc nie powinno to stanowić problemu, o ile zainstalujesz przez ansible-galaxy.

Zadania prawdopodobnie nie będą działać na hostach z systemem Windows (nie testowane).

Zmienne roli

Zmienne defaults zadeklarowane w tym module:

symfony_env: prod
symfony_php_path: php # Wykonywalny plik PHP do użycia we wszystkich zadaniach w wierszu poleceń

symfony_console_path: 'app/console' # Jeśli używasz Symfony 3+, powinno być '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 # Zawsze próbuj aktualizować composer
symfony_composer_version: 1.10.1 # Zainstaluj konkretną wersję composera. Jeśli ta zmienna nie jest ustawiona, zainstalowana zostanie najnowsza stabilna wersja

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: ''

Hooki

Ta rola wspiera hooki w stylu ansistrano przed i po każdym zadaniu.

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

Dodatkowo, zapoznaj się z listą zmiennych używanych przez ansistrano.

Uwaga dotycząca migracji schematu ORM/ODM

Migracje schematu bazy danych nie mogą być zazwyczaj uruchamiane równolegle na wielu hostach! Z tego powodu opcje symfony_run_doctrine_migrations oraz symfony_run_mongodb_schema_update są domyślnie wyłączone.

Aby obejść równoległe wykonanie, możesz zrobić następujące:

  1. Określ własny ansistrano_before_symlink_tasks_file, być może korzystając z tego projektu jako szablonu (sprawdź w cbrunnkvist.ansistrano-symfony-deploy/config/steps/).
  2. Wybierz jedną z poniższych metod:
  • (a) Zorganizuj hosty w grupy, tak aby zadanie było uruchamiane tylko na pierwszym hoście w grupie: when: groups['www-production'][0] == inventory_hostname
  • (b) Użyj run_once: true, być może z delegate_to: some_primary_host (Dokumentacja: Delegacja playbooków).

Zależności

Instalacja z linii poleceń za pomocą ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy powinna pobrać zewnętrzną rolę jako zależność, więc nie ma potrzeby dodatkowego kroku.

Przykład playbooka

Jako minimum potrzebujesz prawdopodobnie zadeklarować zmienne ansistrano_deploy_from oraz ansistrano_deploy_to w swoim play. Ansistrano domyślnie używa rsync z lokalnego katalogu (ponownie sprawdź dokumentację ansistrano).

Załóżmy, że istnieje plik 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

Ten playbook powinien być wykonany jak każdy inny, tzn. ansible-playbook -i some_hosts_file deploy.yml.

Ma sens trzymanie jednorazowych zadań przygotowawczych systemu w osobnym playbooku, np. my-app-infrastructure/setup.yml.

Licencja

MIT

Informacje o autorze

  • ansistrano-symfony-deploy, napisane przez Conny Brunnkvist cbrunnkvist@gmail.com
  • Rola jest utrzymywana przez zespół ansistrano-deploy
  • Niektóre fragmenty kodu zostały zaczerpnięte lub zainspirowane rolą symfony2-deploy zespołu Servergrove
O projekcie

Common post-deploy tasks for Symfony projects

Zainstaluj
ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy
Licencja
mit
Pobrania
43.6k
Właściciel