SparrowDO / SparrowUPツールキットを使用したリモートサーバーでのsparrowオートメーションスクリプトの実行

Sparrowは、さまざまな自動化スクリプトを開発および実行するために設計された多目的スクリプトシステムです。 必要なタスクに応じて、これはアプリケーションの展開と構成、北部インフラストラクチャの監視またはテスト、または他の問題の解決策、つまり自動モードでのスクリプトの実行になります。


最近まで、このようなスクリプトの起動はコンソールクライアント( sparrowまたはsparrowdo )に限定されていましたが、本日は、中央WebサービスSparrowUPを介してリモートサーバーにsparrowスクリプトを自動的にインストールおよび実行するパイロットプロジェクトを紹介します。



SparrowUPをインストールする


SparrowUPは、別のサーバーにインストールされるWebアプリケーションであり、そこから他のサーバーへのsparrowスクリプトのインストールと起動が開始されます。 このシステムのトランスポートはsshです。 SparrowUPは、発生するsshセッションを開始します。



これがすべて機能するためには、SparrowUPサーバーからターゲットサーバーへのパスワードなしのアクセスと、sshコマンドを実行するユーザーのsudo特権を提供する必要があります。


したがって、SparrowUPをインストールします。


なぜなら SparrowUPは、すべてのスクリプトロジックをSparrowDOクライアントに委任します。このクライアントは最初に必要です。


次に、SparrowDOはPerl6で記述されているため、まず必要なperl6 *依存関係(Perl6、panda)をインストールします。インストールの詳細はすべてここで説明します-http://rakudo.org/how-to-get-rakudo、時間を節約するためにここでは説明しませんインストールサイクル全体。 Perl6とpandaをインストールした後、SparrowdoをPerl6モジュールとして配置します。


$ panda install Sparrowdo 

次に、SparrowUP Webアプリケーションをインストールします(Perl5 / Mojoliciousで記述されています)。


 $ git clone https://github.com/melezhik/sparrowup.git $ cd sparrowup $ carton 

SparrowUPが機能するために必要なデータベースを作成します。


 $ bash utils/populate_db.bash 

sparrowスクリプトを使用してリポジトリをダウンロードします。


 $ git clone https://github.com/melezhik/sparrowdo-test.git 

リポジトリの構造は次のようになります。


 project-dir/sparrowfile project2-dir/sparrowfile project3-dir/sparrowfile    

したがって、各プロジェクトフォルダには、sparrowDOのドキュメントで説明されている形式と構造のsparrowスクリプトの説明を含むsparrowfileという1つのファイルが含まれている必要があります。 たとえば、CPANパッケージMooseおよびDBIx :: Classをインストールするためのスクリプトは次のようになります。


 #!/usr/bin/env perl6 use v6; use Sparrowdo; task_run %( task => 'cpan-package', plugin => 'cpan-package', parameters => %( list => 'Moose DBIx::Class', install-base => '/opt/lib/perl' ), ); 

そして、 https//github.com/melezhik/sparrowdo-testスクリプトを使用したリポジトリ内のプロジェクトのリストを以下に示します。


 $ ls -1 complex cpan-package cpan-package2 df-check git-base group nano-setup package-generic perl-app proc-validate README.md service templater 

次に、SparrowUP構成ファイル(/etc/sparrowup.conf)を構成する必要があります。これは、スクリプトを使用してリポジトリをチェックアウトしたディレクトリと、SparrowUPがレポートファイルを保存するディレクトリを示します(ディレクトリは、 SparrowUPサービスが開始されます)、これは私のマシンでどのように見えるかです:


 $ /etc/sparrowup.conf { 'repo' => '/home/melezhik/projects/sparrowdo-test/', 'reports_dir' => '/home/melezhik/whatsup-reports' } 

さて、SparrowUP Webサービスを実行できるようになりました。簡単な例では、通常の「nohup」を使用します(本番システムでは、もちろん別のinitスクリプトを作成できます)。


 $ cd sparrowup $ nohup carton exec morbo app.pl & 

アドレス127.0.0.1 ∗ 000に移動して、インターフェースが使用可能であることを確認します。


画像


スズメのスクリプトを実行する


完了したタスクのリストはまだ空です。 スクリプト化されたリポジトリを使用していくつかのタスクを実行しましょう。 たとえば、十分なディスク容量があることを確認します。


 $ cat df-check/sparrowfile use v6; use Sparrowdo; task_run %( task => 'check my disk', plugin => 'df-check', parameters => %( threshold => 70 ) ); 

画像


実行中のタスクがタスクキューに追加され、通知されます。


画像


タスクは非同期に実行されます。 キュー内のタスクの実行を開始するには、タスクハンドラーを実行する必要があります(これは、インストールを開始する前にサービスを開始する前に行うことができます。この記事の執筆時点で忘れていました:)


 $ cd sparrowup $ nohup carton exec ./app.pl minion worker & 

SparrowUPアプリケーションはMojoliciousフレームワークで記述されており、タスクシェイダーとしてMinionモジュールが使用されています-興味のある方はこれらのツールに慣れるためにドキュメントを参照できます。


さて、しばらくすると、シェダラーはタスクの実行を開始します。


画像


画像


そして、SparrowUPレポートの形式で結果を確認できます。


画像


また、たとえば、nginxサーバープロセスがシステムで実行されていることを確認するproc-validateスクリプトレポートがあります。


 $ cat proc-validate/sparrowfile use v6; use Sparrowdo; task_run %( task => 'check my process', plugin => 'proc-validate', parameters => %( pid_file => '/var/run/nginx.pid', footprint => 'nginx.*master' ) 

);


画像


HTTP APIを使用してプログラムで新しいタスクを開始することもできます。


 $ curl 127.0.0.1:3000/df-check -d server=127.0.0.1 

追加のパラメーターを指定することもできます。たとえば、ssh接続のユーザー名とポート番号を指定します。


 $ curl 127.0.0.1:3000/df-check -d server=192.168.0.1 -d ssh_user=sparrow -d ssh_port=23 

タスクは、同じサーバーに対して特定のプロジェクトを繰り返し実行するか、[ジョブの再スケジュール]ボタンで再開できます。


制限事項(やるべきことや議論すべきこと)



おわりに


サービスとのこの知り合いでSparrowUPを完了することができます。 ご清聴ありがとうございました!


いつものように、私は質問と建設的なコメントを待っています。


PS関係者の皆様へ-システム管理者の日おめでとうございます!


PS2記事の最後では、調査は伝統的にメイントピックに直接関係していません。



Source: https://habr.com/ru/post/J306684/


All Articles