インフラストラクチャテストのための鳥
7969 ワード
Bird ブロックに新しい子供が1つのインフラストラクチャをraku dslを使用してテストすることです.
それはシンプルで、モダンで光沢のある書かれたRaku 言語と効率的-それはターゲットホストに余分な依存関係を必要としません.
始めましょう.
インストール
タスクを実行する タスクの出力をチェックする これら2つのステージは1つずつ実行されますが、それぞれの別の意味があります.
鳥は生成する
この段階では、準備されたタスクチェック規則を使用します.
パースと検証の手順は、鳥が走るホストで実行されます.
解析と検証が完了すると、結果は報告書として見られる
最初のテスト実行のロジックは、他のテストツール(GOSS、TestInfraa、Chef Inspectなど)が通常持っているものとは少し異なります. 基本的なテストコマンドの出力を見ることができます( 鳥は、それがテキストデータ出力とregexp規則に基づいて仮定をチェックするために堅いデータ構造と基本的な使用raku regexpsに頼らないので、より簡単に発展する方法です. 新しいテストメソッドを追加するのに文字通り数分かかります
結論
それはシンプルで、モダンで光沢のある書かれたRaku 言語と効率的-それはターゲットホストに余分な依存関係を必要としません.
始めましょう.
インストール
zef install --/test Bird
一度鳥をインストールすると、彼らは余分なステップを行う必要があります.鳥が頼りにssh-bulk-check
スパロウプラグインを設定する必要があります.
export SP6_REPO=https://sparrowhub.io/repo
s6 --index-update
最後のステップでは、パブリックスパローのリポジトリが追加され、鳥がプラグインをインストールするときに初めて起動します.
インフラテスト nano rules.pl6
:
# check if nginx service is running
service-is-running "nginx";
# check if nginx service is enabled
service-is-enabled "nginx";
テストは有効なRAKUコードですfunctions 鳥によって輸出されます.この例ではnginx
サービスが起動し、autostartに追加されました.
では、テストを実行しましょう.
bird --host=sparrowhub.io
bird:: [read host from command line] [sparrowhub.io]
bird:: [cmd file] [/root/.bird/285892/cmd.sh]
bird:: [check file] [/root/.bird/285892/state.check]
bird:: [init cmd file]
[repository] :: index updated from file:///root/repo/api/v1/index
[check my hosts] :: check host [sparrowhub.io]
[check my hosts] :: ==========================================================
[email protected]'s password:
[check my hosts] :: Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-77-generic x86_64)
[check my hosts] :: <<< test_01: service [nginx] is running
[check my hosts] :: YES
[check my hosts] :: >>>
[check my hosts] :: <<< test_02: service [nginx] is enabled
[check my hosts] :: YES
[check my hosts] :: >>>
[check my hosts] :: end check host [sparrowhub.io]
[check my hosts] :: ==========================================================
[task check] verify host [sparrowhub.io] start
[task check] test_01: service [nginx] is running
[task check] stdout match (r) <YES> True
[task check] test_02: service [nginx] is enabled
[task check] stdout match (r) <YES> True
[task check] verify host [sparrowhub.io] end
どのように鳥はテストですか?
鳥についての面白いことは、それがテストをする方法です.2つの実行段階があります.
zef install --/test Bird
export SP6_REPO=https://sparrowhub.io/repo
s6 --index-update
nano rules.pl6
:# check if nginx service is running
service-is-running "nginx";
# check if nginx service is enabled
service-is-enabled "nginx";
テストは有効なRAKUコードですfunctions 鳥によって輸出されます.この例ではnginx
サービスが起動し、autostartに追加されました.では、テストを実行しましょう.
bird --host=sparrowhub.io
bird:: [read host from command line] [sparrowhub.io]
bird:: [cmd file] [/root/.bird/285892/cmd.sh]
bird:: [check file] [/root/.bird/285892/state.check]
bird:: [init cmd file]
[repository] :: index updated from file:///root/repo/api/v1/index
[check my hosts] :: check host [sparrowhub.io]
[check my hosts] :: ==========================================================
[email protected]'s password:
[check my hosts] :: Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-77-generic x86_64)
[check my hosts] :: <<< test_01: service [nginx] is running
[check my hosts] :: YES
[check my hosts] :: >>>
[check my hosts] :: <<< test_02: service [nginx] is enabled
[check my hosts] :: YES
[check my hosts] :: >>>
[check my hosts] :: end check host [sparrowhub.io]
[check my hosts] :: ==========================================================
[task check] verify host [sparrowhub.io] start
[task check] test_01: service [nginx] is running
[task check] stdout match (r) <YES> True
[task check] test_02: service [nginx] is enabled
[task check] stdout match (r) <YES> True
[task check] verify host [sparrowhub.io] end
どのように鳥はテストですか?
鳥についての面白いことは、それがテストをする方法です.2つの実行段階があります.
check my host
) task checks
) タスクチェックを実行する
鳥は生成する
Bash
実行されるテストを表すコマンド.最後のbashスクリプト/root/.bird/285892/cmd.sh
) を実行し、実行した後に実行されるssh
ターゲットホストで.このステージが終わったら、鳥には出力があります[check my hosts]
次の段階で解析されます.タスクの出力チェック
この段階では、準備されたタスクチェック規則を使用します.
/root/.bird/285892/state.check
) と出力に対して実行します.鳥は使うSparrow task check DSL そうする.パースと検証の手順は、鳥が走るホストで実行されます.
解析と検証が完了すると、結果は報告書として見られる
[task check]
を返します.最初のテスト実行のロジックは、他のテストツール(GOSS、TestInfraa、Chef Inspectなど)が通常持っているものとは少し異なります.
[check my hosts]
テスト結果だけでなく、より多くのコンテキストを与えるlsof
コマンド出力-https://github.com/melezhik/bird/blob/master/lib/Bird/DSL/Service.pm6#L49-L68 nano rules.pl6
:service-listen-to "nginx", 443;
そして、より多くの例lsof
ベースのテストレポートbird --host=sparrowhub.io
bird:: [read host from command line] [sparrowhub.io]
bird:: [cmd file] [/root/.bird/286735/cmd.sh]
bird:: [check file] [/root/.bird/286735/state.check]
bird:: [init cmd file]
[repository] :: index updated from file:///root/repo/api/v1/index
[check my hosts] :: check host [sparrowhub.io]
[check my hosts] :: ==========================================================
[email protected]'s password:
[check my hosts] :: <<< test_01: service [nginx] listens to port [443]
[check my hosts] :: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
[check my hosts] :: nginx 709 root 8u IPv6 21734 0t0 TCP *:443
[check my hosts] :: nginx 709 root 9u IPv4 21735 0t0 TCP *:443
[check my hosts] :: nginx 710 www-data 8u IPv6 21734 0t0 TCP *:443
[check my hosts] :: nginx 710 www-data 9u IPv4 21735 0t0 TCP *:443
[check my hosts] :: >>>
[check my hosts] :: end check host [sparrowhub.io]
[check my hosts] :: ==========================================================
[task check] verify host [sparrowhub.io] start
[task check] test_01: service [nginx] listens to port [443]
[task check] stdout match (r) <^^ nginx \s+ \S+ .* '*' ':' 443 $$> True
[task check] verify host [sparrowhub.io] end
テスト出力は、カラー出力でバードを実行する場合はさらに明確になります.nano rules.pl6
:service-is-running "nginx";
service-is-enabled "nginx";
service-listen-to "nginx", 443;
service-listen-to "rakudo", 5000, True;
bird --host=sparrowhub.io
結論
あなたが鳥が好きで、インフラストラクチャテストでそれを使うかもしれないことを願っています.私は常に新しいメソッドを追加されている、あなたもチェックすることができますてk8s
を使用して展開documentation !
お読みありがとうございます.
アレクセイ
Reference
この問題について(インフラストラクチャテストのための鳥), 我々は、より多くの情報をここで見つけました
https://dev.to/melezhik/bird-raku-dsl-for-infrastructure-testing-1hph
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(インフラストラクチャテストのための鳥), 我々は、より多くの情報をここで見つけました https://dev.to/melezhik/bird-raku-dsl-for-infrastructure-testing-1hphテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol