孤立した BOSH ジョブ
bpm (BOSH プロセス マネージャー) は、 monit
と BOSH ジョブの間のレイヤーであり、ほぼすべてのボイラープレート起動スクリプトを削除しながら追加機能を追加します。過去数年間にリリースされた BOSH バージョンと下位互換性があります。
現在のジョブのライフサイクルは、 monit
セマンティクスに大きく依存しています。ジョブとプロセスの開始順序は保証されておらず、システムが予期しない状態になる可能性のある隠れたタイムアウトが存在します。
bpm は、あなたの仕事に対する期待を非常に明確にします。これは、処理にかかる時間、BPM がプロセスとどのように通信するか、特定のシナリオでジョブがどのように動作するかを定義します。ほとんどのジョブはすでに準拠しています。
bpm を使用するジョブは互いに分離されています。すべてのオペレーティング システム リソース (ネットワークを除く) は、ジョブがそのジョブを含むジョブ以外の他のプロセスを参照したり対話したりできないように名前空間が設定されています。
これにより、ジョブとシステム間のインターフェイスがはるかに小さく保守しやすくなりますが、マシン上のジョブの 1 つが侵害された場合、インシデントは同じジョブすべてではなく、そのジョブのみに限定されるという重要なセキュリティ障壁が提供されます。機械。
bpm は、上記の機能に選択されたテクノロジーにより、リソース制限を提供することもできます。これにより、あるジョブが、同じ場所に配置された他のジョブの動作に必要なオペレーティング システム リソースを枯渇させることがなくなります。
ドキュメントは docs ディレクトリにあります。私たちが bpm を開発しているとき、このドキュメントは実装の変更を一時的に導くかもしれませんが、最終的には bpm ドキュメントの公式ソースになります。
bpm は 1.0 に達し、大部分の BOSH ジョブで使用できる安定したパブリック API を備えています。 2.0 より前のパブリック API に対して、これ以上下位互換性のない変更を加える予定はありません。
理念と用語集、bpm がジョブに提供するランタイム環境、構成形式、およびシステムの未定義の動作について読み始めることができます。
現在、Linux 以外での開発はサポートされていませんが、macOS では Docker ベースのテストを実行できます。
ローカルテストに必要な依存関係:
ドッカー
行く
次の手順により、ローカルの Docker コンテナーでテストを実行できるようになります。
root として次のコマンドを実行して、スワップ アカウンティングを有効にします。
# sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="swapaccount=1"/' /etc/default/grub# update-grub# reboot
このリポジトリとサブモジュールのクローンを作成します。
$ cd ~/ワークスペース $ git clone https://github.com/pivotal-cf/bpm-release.git $ cd ~/workspace/bpm-release
テストを実行します。
$ cd ~/workspace/bpm-release $ ./scripts/test-with-docker