cbrunnkvist.ansistrano-symfony-deploy
ansistrano-symfony-deploy
Symfonyフレームワーク(flexを含む)で開発されたPHPアプリケーションを* nixサーバーに「Capistrano」スタイルでデプロイするためのAnsibleタスクのセットです(リリース、共有、current->releases/X)。
この役割は、主にComposerの実行ファイルを取得し、依存関係をインストールし、オートローダーを設定し、キャッシュをウォームアップし、マイグレーションをデプロイするなど、一般的なポストインストール設定タスクのコレクションです。ディレクトリ構造の設定やファイルをサーバーに転送する作業は、より一般的なansistrano-deploy
役割によって処理されます。
この実装方法は、いくつかのansistrano_(before|after)_X
変数を定義することによって行われます(詳細についてはansistranoドキュメントを参照してください)。
要件
現在のAnsibleバージョンの制約により、ansistrano-symfony-deploy
とansistrano-deploy
が同じ親ディレクトリを共有することが__必須__です。これは通常のケースであり、ansible-galaxy
を使用してインストールする限り問題はないはずです。
タスクは、Windowsターゲットホストではおそらく機能しません(未テスト)。
役割変数
このモジュールで宣言されたdefaults
変数:
symfony_env: prod
symfony_php_path: php # 全てのコマンドラインタスクで使用するPHP実行ファイル
symfony_console_path: 'app/console' # Symfony 3以上を使用する場合は、'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 # 常にComposerの自己更新を試みる
symfony_composer_version: 1.10.1 # 特定のComposerバージョンをインストールします。この変数が設定されていない場合は、最新の安定版がインストールされます
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: ''
フック
この役割は、各タスクの前後にansistranoのようなフックをサポートしています。
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
また、ansistranoで使用される変数の一覧も参照してください。
ORM/ODMスキーママイグレーションに関する注意
データベーススキーママイグレーションは、一般的に複数のホストで並行して実行することはできません!この理由から、symfony_run_doctrine_migrations
およびsymfony_run_mongodb_schema_update
オプションは、デフォルトでオフになっています。
並行処理を回避するために、以下のようにしてください:
- 自分の
ansistrano_before_symlink_tasks_file
を指定します。プロジェクトの中にあるものをテンプレートとして使用することもできます(cbrunnkvist.ansistrano-symfony-deploy/config/steps/を見てください)。 - 次のアプローチのいずれかを選択します:
- (a) タスクがあるグループの最初のホストでのみ実行されるようにホストをグループ化します:
when: groups['www-production'][0] == inventory_hostname
- (b)
run_once: true
を使用し、delegate_to: some_primary_host
を使う(ドキュメント:Playbookの委任)
- (a) タスクがあるグループの最初のホストでのみ実行されるようにホストをグループ化します:
依存関係
コマンドラインからansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy
を使用してインストールすることで、外部役割を依存関係として引き下ろすことができるため、追加の手順は不要です。
例のプレイブック
最低限必要なことは、プレイでansistrano_deploy_from
とansistrano_deploy_to
変数を宣言することです。Ansistranoは、ローカルディレクトリからrsyncを使用するようにデフォルト設定されています(再度、ansistranoドキュメントを参照してください)。
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
このプレイブックは他のどのプレイブックと同じように実行できます。すなわち、ansible-playbook -i some_hosts_file deploy.yml
。
一度限りのシステム準備タスクは別のプレイブックに保持するのが理にかなっていると思います。例:my-app-infrastructure/setup.yml
。
ライセンス
MIT
著者情報
- ansistrano-symfony-deploy、著者 Conny Brunnkvist cbrunnkvist@gmail.com
- 基本的な役割は
ansistrano-deploy
チームによって維持されています - 一部のコードはServergroveチームの
symfony2-deploy
役割から引用またはインスパイアされています
Common post-deploy tasks for Symfony projects
ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy