Sparrow-ユーザースクリプト管理システム

こんにちは。 今年中に、ユーザースクリプト管理システムであるSparrowに関する一連の記事を執筆しました。 今年の終わりに、私は一種の結果としての投稿をしたいと思います。もう一度このツールの主な本質を説明しようとします。









画像







それでは、Sparrowとは正確には何ですか? このシステムを使用するためのさまざまなオプションを使用しない場合、Sparrowを使用すると、カスタムスクリプトをすばやく開発、構成、および実行できます。







具体例を挙げましょう。 私の仕事では、多くの場合、多くのサーバーにアクセスし、そこでハンドと呼ばれる何かをしなければなりません。 同時に、自分のアカウントの環境を、同じではないにしても、自分のマシンで処理する環境と非常によく似たものにしたいと考えています。 ここに私が意味するものがあります:









などなど。 そのような些細なことの各リストは、独自のものを持つことができます。 もちろん、これらすべては、「ロケット科学」ではなく、手動で設定およびインストールできますが、最初に、ソフトウェアを正しく設定するために、毎回多くのコマンドを入力し、ドキュメントを調べる必要があります。 第二に、すべてを念頭に置くのは難しいため、何かを単に忘れたり見逃したりすることがあります。 これにはすべて時間と労力がかかります。 ですから、私はここで誰にもアメリカを開かないでしょう、私たちは通常の自動化を必要とします。







わかった ここですぐにフォームのコメントを予測し、そのようなタスクに何らかのシェフやansibleを使用しないようにしましょう。 これに対して、私は多くの考えを持っています、ここに彼らはあります:









(*)この投稿は、現在のSparrowの実装に比べて少し時代遅れですが、重要な点はそこに反映されています。







したがって、Sparrowの主な機能を要約すると、次のように言えます。









これらの言語のいずれについても、 Sparrow APIが実装されており、スクリプトを構成し、マルチシナリオプログラム(Sparrowでモジュールと呼ばれる)を整理する便利な方法を可能にします。また、スクリプト言語に関係なく、実行中のスクリプトの出力ストリーム(stdout) Sparrowは、テストスクリプトの作成、監視、監査に非常に魅力的です。 (例として、プロジェクト-minoca-pkg-test - Minoca OSオペレーティングシステムでアセンブルされたパッケージのテストを参照してください)。 このすべての詳細については、Sparrowスクリプト開発環境を実装するOutthenticモジュールのドキュメントをご覧ください









これらは、Sparrowエコシステムのすべての特性ではありませんが、主要な特性であるため、投稿があまりにも理論的であることが判明しないように、このツールを使用するための典型的なオプションを紹介します。







スズメのインストール



通常のCPANモジュールとして配置します。 カールも必要です。 そしてそれだけです。







$ cpanm --notest -q Sparrow $ yum install curl
      
      





SparrowHubリポジトリインデックスの更新を取得します。



Sparrowでapt-get update



コマンドを実行して通常行うことは次のようになります。







 $ sparrow index update
      
      





スクリプト検索



インデックスを更新すると、Sparrowでプラグインと呼ばれるスクリプトを検索できます。 たとえば、nanoエディターに関連するすべてのものが必要です。







 $ sparrow plg search nano
      
      





正規表現検索を使用できます:







 $ sparrow plg search ssh.*
      
      





プラグインのインストール



プラグインは次のように配置します。







 $ sparrow plg install nano-setup
      
      





ところで、スクリプトに依存関係がある場合は、それらもインストールされます。 Sparrowは、PerlのcpanfileおよびRubyのGemfileを介した依存関係の宣言とインストールをサポートしています。







すでに述べたように、必要なバージョンにプラグインを配置できます。







 $ sparrow plg install nano-setup --version 0.1.2
      
      





プラグインの起動



プラグインをインストールしたら、実行できます。 ここで、たとえば、nano-rcファイルの設定方法:







 $ sparrow plg run nano-setup
      
      





プラグインに応じて、さまざまなパラメーターを入力に渡すことができます。







 $ sparrow plg run nano-setup --param tabsize=2 --param speller='hunspell -x -c'
      
      





または、プラグインを複数回実行する予定がある場合、および/または多くのパラメーターがある場合は、起動するプラグインのパラメーターを決定するタスクを作成できます。たとえば、これはlogdogプラグインを使用してnginxログでフォーム500のエラーを見つけるためのタスクを作成する方法です:







 $ sparrow plg install logdog #  -      $ sparrow project create nginx #         $ sparrow task add nginx 500-errors logdog #    : $ sparrow task ini nginx/500-errors <logdog> file /var/log/nginx/access.log time_pattern \[(\d+\/\S+\/\d+):(\S+) time_format %d/%b/%Y %T history 5 minutes timezone Europe/Moscow filter HTTP\/\S+?"\s+500\s key_field (\S+) density 3 check_mode report </logdog>
      
      





これで、指定されたパラメーターでタスクを開始できます。







 $ sparrow task run nginx/500-errors
      
      





または、起動時にいくつかのパラメーターをオーバーライドします。







 $ sparrow task run nginx/500-errors --param logdog.density=10 --param logdog.history="'1 weeks'"
      
      





プラグインの使用方法を忘れた場合は、いつでもドキュメントを入手できます。







 $ sparrow plg man nano-setup
      
      





または、SparrowHub Webインターフェースを使用して、必要なプラグインを見つけます。







https://sparrowhub.org/info/nano-setup







タスクの公開



後で別のサーバーで使用できるように、独自のタスクを保存すると便利な場合があります。 簡単な例を挙げます。 私は仕事の過程でよく使うパッケージのリストを持っています。 新しいサーバーを使用する場合に必要になる可能性が最も高いと言えます。 OK、 package-genericプラグインを使用して、さまざまなディストリビューションのパッケージをインストールします。







まず、プラグインをインストールしてタスクを作成します。







 $ sparrow plg install package-generic $ sparrow project create utils $ sparrow task add utils my-packages package-generic $ sparrow task ini utils/my-packages list tree mc nano hunspell git
      
      





次に、アカウントのSparrowHubサーバーにタスクを保存します。







  $ sparrow remote task upload utils/my-packages 'my useful packages'
      
      





さて、苦労せずに、必要なパッケージのリストを思い出さずに、別のサーバーに移動して、タスクからインストールするだけです:







  $ ssh new-server $ sparrow remote task run utils/my-packages
      
      





次のようなリモートタスクのリストを取得できます。







  $ sparrow remote task list
      
      





また、リモートタスクを公開して、他の人が使用できるようにすることもできます。







 $ sparrow remote task share utils/my-packages
      
      





ユーザーが私のタスクを実行できるようになりました:







 $ sparrow remote task run melezhik@utils/my-packages
      
      





次のように、SparrowHubで利用可能なすべてのリモートタスクのリストを取得できます。







 $ sparrow remote task public list
      
      





独自のプラグインの開発と公開は別のトピックのトピックであり、興味のある人はHabréに関する私の投稿 *を参照できます。







(*)この出版物は、Sparrowの現在のバージョンに関しては少し古くなっていますが、出発点として役立つ場合があります。その後、Sparrowプラグイン開発環境のドキュメントを参照できます-Outthentic、またはWebアプリケーションのテストスクリプトを作成する場合はswatシステム。







これはおそらくすべてですが、もちろんそれはシステムへの大雑把なエクスカーションでしたが、すべての種類のSparrow機能に関する詳細はドキュメントページで見つけることができます。







まとめ



では、Sparrowはど​​のように役立つのでしょうか? 私は要約しようとします:









PS:おめでとうございます! 頑張って!







そして最後に、伝統的に同様のテーマを持つ小さなアンケート。








All Articles