Github: https://github.com/ianmiell/shutit
黙れ
多彩な自動化フレームワーク。
ShutItは、端末上のユーザの行動をモデル化する自動化ツールです。
コマンドラインで人間がほとんど手間をかけずに実行できるプロセスを自動化することができます。
もともと複雑なDockerビルドを管理するために書かれたものですが、bash、Docker、Vagrant、ssh、任意のビルドコンテキストをサポートする汎用の自動化ツールです。
ShutItはデモのビデオを制作し、環境を設定するために必要な再現可能なステップを捕捉し、適切な出力を得ることに挑戦する( grep-scales参照)ように、教育用ツールとしても使用できます。
Dockerの詳細を知りたい場合は、 公式サイトを参照するか、ShutIt – Docker in Practiceのクリエイターの本を見てください。
本当に簡単な概要
いくつかのユースケース:
-
あなたはbashが好きで、タスクを自動化したい、構造とサポートを持っていますが、あなたが知っている愛するコマンドラインから離れてしまう構成管理フレームワークを学びたくありません。
-
マシンのクラスターをモデル化する複雑なバゲント環境を作成したい
-
参考になるウォークスルーを作成したい:
-
“phoenix deployment”に興味があります。
-
ターゲットシステムを動かすために設計された構成管理ソリューションを維持(または学習)する必要なしに、スクリプトを取得してステートレスコンテナに素早く移行したい
-
あなたは、高度に構成可能なステートレスコンテナの開発、テスト、および生産を望むプログラマです。
何をしますか(bash Builds)?
ShutItは、pexpectの周りにモジュール式で使いやすいラッパーとして機能します。
ここに、ファイルとディレクトリが作成されていない場合に作成するスクリプトの簡単な例を示します。
それは何ですか(チュートリアル)?
これはドッカーの機能をベースにしていますが(下を参照)、ユーザーが選択したポイントでランを中断して挑戦することができます。
ShutItには2つのタイプの「挑戦」が存在します。
- スケール
- フリーフォーム
スケールは、続行する前に特定のコマンドを実行するよう指示します。 これは、特定のコマンドやフラグを「指の下に」欲しいときに役立ちます。これは専用で直接的な練習なしには起こりません。
自由形式の演習では、実行するタスクが与えられ、シェルに自由にアクセスできます。 これは、ユーザーにスキルを磨くための現実的な環境を提供することです。 マニュアルページを調べたり、ディレクトリを見たり、便利なユーティリティを探したりすることができます(新しいものをインストールすることもできます)。 終了すると、あらかじめ指定されたコマンドが実行され、システムが適切な状態になっているかどうかがチェックされます。 gitの基本的な例を次に示します。
Dockerベースのチュートリアルを使用して環境を混乱させると、CTRL-Gを押して状態を元の状態に戻すことができます。
それは何ですか(迷彩)?
bashビルドを使用してn個の迷惑メールマシンをセットアップし、Landrushを使用してホストおよびゲストVMからアクセス可能な有用なホスト名を提供します。
VirtualBoxとLibvirtの両方のプロバイダをサポートしています。
これにより、Dockerが許すよりも多くのインフラストラクチャプロジェクトに別の種類の環境が含まれます。
この例は、Ubuntu VM(Linuxホスト上)にDockerを設定し、Ubuntu VMを使用してDocker内でCentOSイメージを実行する再現可能なビルドを示しています。
環境を調べるためにシェルの中間ビルドにユーザを置いた後、ユーザがビルドを再実行して、psがイメージにインストールされていることを確認する指令を追加します。
それは何をしますか(Docker Builds)?
シェルスクリプトやDockerfileに似た “ShutIt Module”(上記のbashビルドを参照)から始めます。
上の画像には、これらの5つがあります。 高レベルでは、それぞれ次の属性を持ちます。
- 他のモジュールへの0個以上の依存関係のリスト
- 使用可能なモジュール内の順序を表す固有の番号
- モジュールを構築するための一連のステップ(bashコマンド)
画像では、ブログをドッカーのイメージに組み込み、それに付随するすべてのコンテンツと設定が含まれているシナリオを想像してみましょう。
私たちはShutItにMyBlogモジュールをビルドするよう指示し、右側のイメージに従ってビルドを実行します。
コンテナ環境が設定され、モジュールが注文され、ビルドステップが実行されます。 最後に、イメージは設定されたとおりにコミットされ、タグ付けされ、プッシュされます。
これは、複雑な画像設定のための依存関係や画像構築を管理するShutItの中心的な機能です。
しかし、単にビルドステップを実行するだけでなく、シャットライフのライフサイクルを管理してビルドをより堅牢かつ柔軟にすることもできます。
ShutItのライフサイクル
- そのパスで見つけることができるすべてのモジュールを集め、その順序を決定します
- すべてのモジュールに対して、ビルド固有の設定(パスワードなど)を収集します。
- すべてのモジュール間の依存関係と競合をチェックし、どのモジュールをビルドする必要があるかを把握します
- すべてのモジュールについて、モジュールがすでにインストールされているかどうかをチェックします
- すべてのモジュールでビルドが必要な場合は、ビルドを実行します
- すべてのモジュールで、テストサイクルを実行して、すべてが期待どおりであることを確認します
- すべてのモジュールで、ファイナライズ機能を実行してコンテナをクリーンアップする
- イメージのコミット、タグ付け、プッシュを構成します。
これらは、ShutItモジュールファイルに実装できるさまざまな機能に対応しています。
自動生成モジュール
ShutItは、スケルトンコマンドを使用してモジュール(裸のモジュールまたは既存のDockerファイル)の自動生成手段を提供します。 例についてはこちらを参照してください。
本当にクイックスタート
フルユーザガイド
API
インストール
貢献する
私たちはいつも助けを必要とし、潜在的に無限の数の図書館が必要であれば、あなたが貢献する可能性が高いでしょう。 メンターを割り当てたい場合は、 ian.miell@gmail.comにメールしてください 。 彼は噛まないだろう
メーリングリスト
https://groups.google.com/forum/#!forum/shutit-users shutit-users@groups.google.com
既知の問題点
このアプリケーションで使用されるコア技術はpexpectであるため、典型的な使用パターンはプロンプトが返されることを期待することです。 異常なシェルプロンプトとエスケープシーケンスが問題を引き起こすことが知られています。 shutit.setup_prompt()関数を使用すると、より正常なプロンプトを設定することでこれを管理できます。 echo -neでCOMMAND_PROMPTを使用すると、シェルとpexpectパターンの上書きに問題が発生することが判明しています。
ライセンス
MITライセンス(MIT)
Copyright(C)2014 OpenBet Limited
本ソフトウェアおよび関連するドキュメンテーションファイル(以下「本ソフトウェア」といいます)のコピーを取得した者は、本ソフトウェアを制限なく使用、複製、改変、マージする権利を含むがこれに限定されるものではなく、本ソフトウェアのコピーを発行、配布、サブライセンス許諾、および/または販売すること、および本ソフトウェアが提供されている人に、以下の条件に従うことを許可すること。
上記の著作権表示およびこの許可通知は、本ソフトウェアのすべてのコピーまたは実質的な部分に含まれるものとします。
本ソフトウェアは、商品性、特定の目的への適合性および非侵害性の保証を含むが、明示的または黙示的ないかなる保証もなく、現状のまま提供されます。 作者または著作権者は、いかなる場合も、本ソフトウェアまたはその使用に関連して、またはその使用に関連して、またはこれらに関連して発生した契約、不具合またはその他の行為にかかわらず、いかなる請求、損害またはその他の責任も負わないものとします。ソフトウェア。