syntro_gmbh.silverstripe
Ansible ロール: silverstripe
説明
Silverstripe は、ウェブサイトのための多目的なオープンソースフレームワークです。このロールは、選択したSilverstripeのインストールをLAMPサーバーに展開します。
このロールの主な機能は以下の通りです:
- 最小限の展開要件 -> どこでも展開可能
- リリース保持 -> エラーが発生した場合に迅速にロールバック
- ダウンタイムのない展開 -> 使用中に中断せずに展開
- CI対応 -> タグを指定するか、ブランチを最新の状態に保つ
- バックアップ対応 -> フラッシュとビルドの前にバックアップスクリプトを実行
ダウンタイムのない展開
このロールはデフォルトで、ダウンタイムのない任意のバージョンを展開します。これは、ビルドとフラッシュプロセスが、実際のコードベースがhtml/index.php
で使用される前に実行されることを意味します。この利点は、ユーザーがサイトを使用できなくならないため、ダウンタイムが重要な時間帯でも展開が可能です。Silverstripeは大多数のケースでこの方法で展開可能で、データベースの構造はほとんど後方互換性があります。このREADMEを書いている時点で問題が発生する可能性があるのは以下の場合です:
- DataObjectsの削除
- Silverstripeはテーブルを削除せずに、
deprecated_
をプレフィックスとして付けます。
- Silverstripeはテーブルを削除せずに、
- Enum値の変更
これらのシナリオは非常に特定的であり、理論的には発生しないはずです。それは開発者側の計画の不備を示す兆候です。
ただし、これによりデータベースのバックアップに問題が生じる可能性もあります。一貫性のあるバックアップを取得するために追加の注意が必要です。この責任は、ロールを使用するユーザーにあります。
インストール
ansible-galaxy install syntro_gmbh.silverstripe
要件
- Composer
- Git
依存関係
なし。ただし、展開先のホストにComposerとGitがインストールされていることを確認してください。
使用法
いくつかの必須変数を除いて、このロールは任意のSilverstripeプロジェクトに簡単に使用できます。defaultsファイルを参照して、カスタマイズ可能な内容を確認してください。
ウェブルートと生成されるファイル
このロールは、アプリケーションを提供するために以下のディレクトリ構造を使用します:
{{ WorkingDir }}/
├── {{ current }}
│ ├── .htaccess
│ ├── index.php
│ ├── assets --> ../shared/assets
│ └── _resources --> ../releases/<current sha>/_resources
├── releases/
│ ├── <current sha>/
│ │ ├── .git
│ │ └── ...
│ └── <other sha>/
│ ├── .git
│ └── ...
├── shared/
│ └── assets/
└── logs/
あなたのウェブルートは{{ WorkingDir }}/{{ current }}/
ディレクトリを指すべきです。これらのディレクトリは、silverstripe_working_dir
およびsilverstripe_current_dir_name
を使用して設定できます。
データベースの構築と更新、バックアップの実行
Silverstripeを新規インストールで機能させるためには、データベースを構築または更新する必要があります。デフォルトでは、このロールは、ウェブルート内のファイルを更新する前に標準のビルドタスクとflush=1
パラメータを組み合わせて実行します。
追加のコマンドを追加できますが、ビルドコマンドを再度追加するのを忘れないでください、silverstripe_provisioning_cmds
を使用して行います。ここは、必要に応じてバックアップコマンドを追加する場所でもあります。(バックアップユーティリティをインストールし、スクリプトを自動的に作成するためにこちらのresticロールを使用することができます。)バックアップステップの前にこれらのスクリプトを追加することで、ロールバックが必要な場合にインストールの最新バージョンを取得できます。
ダウンタイムのない展開
このロールはSilverstripeバージョンをダウンタイムなしで展開します。これは、ビルドとフラッシュプロセスが、実際のコードベースがindex.php
で使用される前に実行されることを意味します。この利点は、ユーザーがサイトを使用できなくならないため、いつでも展開可能です。Silverstripeは大多数の場合、この方法で展開可能で、データベースの構造はほとんど後方互換性があります。このREADMEを書いている時点で問題が発生する可能性があるのは以下の場合です:
- DataObjectsの削除
- Silverstripeはテーブルを削除せず、
deprecated_
をプレフィックスとして付けます。
- Silverstripeはテーブルを削除せず、
- Enum値の変更
これらのシナリオは非常に特定的であり、理論的には発生しないはずです。それは開発者側の計画の不備を示す兆候です。しかし、更新する前に必ずデータベースのバックアップを作成してください。
ロール変数
defaultsファイルを確認して、制御可能な内容を確認してください。
最小限の例プレイブック
- hosts: all
vars:
silverstripe_project_repository: https://github.com/silverstripe/demo.silverstripe.org
silverstripe_project_version: master
silverstripe_ss_database_name: silverstripe
silverstripe_ss_database_username: root
silverstripe_ss_database_password: root
roles:
- silverstripe
作者
- Matthias Leutenegger
ライセンス
MIT
著作権
(c) 2020, Syntro GmbH
ansible-galaxy install syntro_gmbh.silverstripe