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-deployansistrano-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オプションは、デフォルトでオフになっています。

並行処理を回避するために、以下のようにしてください:

  1. 自分のansistrano_before_symlink_tasks_fileを指定します。プロジェクトの中にあるものをテンプレートとして使用することもできます(cbrunnkvist.ansistrano-symfony-deploy/config/steps/を見てください)。
  2. 次のアプローチのいずれかを選択します:
    • (a) タスクがあるグループの最初のホストでのみ実行されるようにホストをグループ化します: when: groups['www-production'][0] == inventory_hostname
    • (b) run_once: trueを使用し、delegate_to: some_primary_hostを使う(ドキュメント:Playbookの委任

依存関係

コマンドラインからansible-galaxy install cbrunnkvist.ansistrano-symfony-deployを使用してインストールすることで、外部役割を依存関係として引き下ろすことができるため、追加の手順は不要です。

例のプレイブック

最低限必要なことは、プレイでansistrano_deploy_fromansistrano_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
ライセンス
mit
ダウンロード
43.6k
所有者