4. スキャン

4. スキャン

目次
4-1. Ansibleコンテンツのスキャン
4-2. スキャン結果の分析
4-3. パブリック Git リポジトリの品質の確認
4-4. 対象プロジェクトの選択
4-5. スキャンの設定
4-6. Spotterと共有するデータ量の決定
4-7. 出力のカスタマイズ


4-1. Ansibleコンテンツのスキャン


Ansible コンテンツをスキャンしたい場合は、Spotter CLI で実行できます。
コマンドを実行して、あとはスキャン結果を取得するだけです。
$ spotter scan path/to/playbook.yml

注記

「--profile」引数を指定せずにspotter scan コマンドを実行すると、Defaultプロファイルが使用されます。Defaultプロファイルには、基本的なセキュリティ チェックが含まれますが、アップグレードや高度なセキュリティ チェックは含まれません。スキャン プロファイルの詳細については、「5. スキャンプロファイルの作成」をご覧ください。
Spotter を使用すると、単一の .yml ファイル、複数の .yml ファイル、またはフォルダー全体をスキャンできます。

4-2. スキャン結果の分析

Spotter アプリでより詳細なスキャン結果を表示できます。スキャン結果に提供されているURLへアクセスするか、アプリを開いてプロジェクトに移動するだけです。ここでは、すべてのエラー、警告、ヒントが見つかります。実際のコード スニペットも含まれており、チームと共有してトラブルシューティングを簡単に行うことができます。

数値コードのアイコン、または「Warning details」下のリンクをクリックすると、チェックカタログに移動し、エラー、ヒント、または警告を詳しく調べることができます。また、プレイブックの良い例や悪い例も表示されます。



また、スキャン環境を検査して、Ansible と Python のバージョン、インストールされているコレクション、Ansible 構成のオーバーライドを確認することもできます。これにより、将来同じ条件を再現したり、他のユーザーと共有したりできるようになります。
事前に生成された実行環境の YAML ファイルをダウンロードして、時間と労力を節約することもできます。



4-3. パブリック Git リポジトリの品質の確認

パブリック Git リポジトリの品質を評価するには、 Spotter アプリ移動し て [Create project] をクリックします。
[Git repository] をチェックし、URL をフォームに貼り付け、「Branch name」を指定し、 [Create project] をクリックします。



画面の右側にある「Scan results」をクリックするとスキャンの結果が表示され、「Rerun」ボタンをクリックしていつでも同じ Git リポジトリのスキャンを再実行し、進行状況を監視することができます。

4-4. 対象プロジェクトの選択

Spotter はすべてのスキャンに関する分析情報を提供します。これは Spotter アプリで表示できます 。
デフォルトでは、スキャン結果は最初の組織の最初のプロジェクトに保存されますが、スキャンを整理したり、複数の組織やプロジェクトを作成して自動化ワークフローを整頓したい場合は「Projects」が最適なメニューです。

プロジェクト


特定のスキャン結果を表示するプロジェクトを指定するには、「--project-id」 オプションの引数を使用します。
これを使用して、スキャン結果が保存される既存のターゲット プロジェクトの ID を指定します。
$ spotter scan --project-id <project-id>
プロジェクト ID は、 Spotter アプリに移動し 、適切な組織と指定されたプロジェクトを選択してコピーします。

プロジェクトID

「Create Project」をクリックすると、いつでも新しいプロジェクトを作成できます。

プロジェクトを作成する

4-5. スキャンの設定

セットアップ ファイルまたはコマンド ラインに入力する特別なコマンドを使用して、スキャンの動作方法を選択できます。
Spotter では、スキャン設定を調整するさまざまな方法が提供されており、変更するたびに古い設定が置き換えられます。
Spotter では、JSON または YAML 形式を使用して構成を保存するファイルもサポートされています。

ローカルディスカバリー

Spotter はシステムの環境を簡単に検出します。 コマンドを使用します
$ spotter scan --ansible version

設定ファイル

  1. .spotter.json、または .spotter.yml と呼ばれるプロジェクト レベルの構成ファイルを使用してカスタマイズします
  2. 構成ファイルに「–config」引数を指定します
$ spotter --config config.yml scan playbook.yml

オプションの CLI 引数

例:  --ansible-version / --profile / --display-level  など

設定ファイルでは以下を設定できます
  1. Ansibleバージョン
  2. チェックのスキップまたは強制
YAML 構成ファイルの例:

 ansible_version:    "2.9"
 skip_checks:   [ "E1300",   "E1301",   "H1302"]
 enforce_checks:   [ "E005",  "W200",  "H500"]

JSON 構成ファイル形式を使用している場合は、以下を使用します。


{
   "ansible_version" :   "2.14"
}

4-6. Spotterと共有するデータ量の決定

データ保護とセキュリテため、Spotter と共有するデータの量はお客様が管理する必要があります。
最も詳細で価値のあるスキャン レポートを取得するために、Spotter はプレイブックの品質をチェックする際に値とメタデータを収集します。
データ共有から除外した値は自動的に検出され、セキュリティを強化するために null 値に置き換えられます。

それでもデータ共有について懸念がある場合は、いつでもそのようなデータをスキャンから除外することを選択できます。
送信前にデータをローカルで抽出できるため、データを確認して編集し、スキャン用にプッシュすることができます。

したがって、追加のデータを除外したい場合は、次のようにします。

値を除外

より価値のあるスキャン レポートや改善のための追加のヒントを有効にするタスク名、パラメーター値、ファイル名などのデータの収集を除外し
プレイブックで使用されるモジュール名とパラメーター名のみを使用するには、次のコマンドを実行します。
$ spotter scan --exclude-values playbook.yml

メタデータを除外 

ファイル名、行番号、列番号などのメタデータのアップロードを除外することもできます。次のコマンドを実行します。
$ spotter scan --exclude-metadata playbook.yml

収集されたデータを確認

実際にスキャンを実行せずに Ansible コンテンツから収集された情報を確認する場合は、「--export-payload」オプションを使用できます。
スキャン ペイロードをエクスポートすると、スキャンプロセスがどのように機能するかを確認できるため、実際のスキャンを開始する前に収集されたデータを確認して理解することができます。
$ spotter scan --export-payload payload.json playbook.yml
その後、エクスポートされたペイロードを「--import-payload」引数付きでインポートし、スキャンすることもできます。
$ spotter scan --import-payload payload.json

4-7. 出力のカスタマイズ

Spotter を使用すると、自分のスタイルに合わせて自動化をカスタマイズできます。

特定の種類の警告のみを表示

Spotter はプレイブックを徹底的に分析し、見つかった問題の重大度に応じて、Error(エラー)/Warning(警告)/Hint(ヒント) の 3 つのレベルの警告を提供します。

 Ansible Playbook の実行は失敗する可能性があります。

 Ansible Playbook は予期しない動作を行う可能性があります。

 Ansible Playbook は、Ansible のベスト プラクティスを完全にはカプセル化していません。

解決が絶対に必要なエラーのみを探す場合は、 --display-levelオプションの引数を使用するだけでSpotter にエラーのみを表示するように指示できます。  
$ spotter scan --display-level error playbook.yml

同じように警告のみ、またはヒントのみを実行することもできますが、非推奨の設定です。

ヒントのみ表示
$ spotter scan --display-level hint playbook.yml
警告のみ表示
$ spotter scan --display-level warning playbook.yml

スキャン結果の種類を変更

デフォルトでは、Spotter CLI は明確で簡潔なプレーンテキストの結果を提供し、シンプルでわかりやすいものになっています。
ただし、より柔軟性と汎用性を求めるユーザーもいると理解しています。
オプションの引数で JSON や YAML などの希望する形式を指定するだけで、スキャン結果をさまざまな形式で表示できます。
$ spotter scan --format json playbook.yaml

ドキュメントのURLを省略 

Spotter は、モジュール ドキュメントへの直接リンク (可能な場合は関連する Ansible コンテンツ ドキュメントへの URL) を提供します。これにより、オンラインでの検索に費やす時間を大幅に節約できます。
ただし、スキャン結果のみが必要な場合があることも理解しています。「--no-docs-url」引数を使用すると、ドキュメントをスキップして、スキャン結果のみに集中できます。
$ spotter scan --no-docs-url playbook.yml

カラー出力を無効にする

Spotter は、エラー、ヒント、警告をさまざまな色で表示して、見つかった問題の種類と重大度を一目で確認できるようにしています。無色に設定したい場合は、「--no-color」オプションを使用してください。
$ spotter --no-color scan playbook.yml

保存フォルダの設定

デフォルトでは、トークンのホームは 「~/.config/steampunk-spotter」 にあります 。
ただし変更したい場合は、「--storage-path」オプションの引数を使用して保存先をカスタマイズできます。
$ spotter --storage-path /my/project/.storage scan playbook.yml

APIエンドポイントの設定

Spotter CLI は可能性の世界への入り口であり、API エンドポイントを好みに合わせてカスタマイズすることが非常に簡単になりました。API エンドポイントを設定する方法は複数あります。

1. グローバル--endpointオプション引数: API エンドポイントを直接指定するコマンドを実行します。
$ spotter --endpoint "<spotter-api-url>" scan playbook.yml
2. SPOTTER_ENDPOINT 環境変数: 選択した API エンドポイントを使用して SPOTTER_ENDPOINT 環境変数をエクスポートします。
$ export SPOTTER_ENDPOINT=<spotter-api-url>
3. ストレージフォルダ(~/.config/steampunk-spotter/spotter.json)に、ルートJSONエントリ "endpoint": "<endpoint>" と記載した設定ファイルを作成します。
     選択したAPIエンドポイントは一定のままです。以下のJSONコンテンツで手動で作成できます:

  {
     "endpoint" :   "<endpoint>"
  }



    • Related Articles

    • 5. スキャンプロファイルの設定

      スキャンを実行する際、特定の目標をターゲットにします。 たとえば、あるプロジェクトでは Ansible 環境を新しいバージョンにアップグレードすることに焦点を当て、別のプロジェクトでは現在のバージョンのプレイブックを強化することを目指す場合があります。 つまり、Steampunk Spotter によって提供される特定のチェック結果は、あるプロジェクトには関連していても、他のプロジェクトには関連していない可能性があります。 Spotter は、「--profile」引数 (選択されたチェック ...
    • 15. Spotter コマンド集

      こちらの記事でSpotterコマンド全件を紹介します。 Spotter CLIで「--help」コマンドを実行することでも、いつでも確認することが可能です。 スキャン $ spotter scan playbook.yml デフォルトスキャンを実行します。 $ spotter scan path/to/playbook プレイブックをスキャンします。 $ spotter scan path/to/taskfile1.yaml タスクファイルをスキャンします。 $ spotter scan ...
    • 16. インテグレーション

      Spotter の機能を強化し、ワークフローを合理化し、開発プロジェクトを効率的に管理します。Spotter は作業環境とシームレスに統合されます。 GitLab と GitHub の統合により CI/CD パイプラインに組み込んだり、Spotter Visual Studio Code 拡張機能を使用してお気に入りのコード エディターで使用したり、 追加の機能を発見したりすることもできます。 GitHubアクション Steampunk Spotter GitHub Action ...
    • 13. 分析とレポート

      Spotter アプリは、スキャンを実行した場所に関係なく、スキャン履歴と分析を確認できるため、失敗したプレイブックの実行頻度を追跡し、一般的なエラーを特定し、傾向を見つけ、進行状況を監視できます。 問題の原因を探すのに何時間も費やす必要はありません。プレイブックの問題点に対処し、潜在的な解決策を見つけることがより迅速で簡単、明確になります。 ...
    • 6. チェックのスキップと強制

      Spotter を使用すると、組織全体でコンプライアンスと品質を達成できるよう、すべての自動化ワークフローでどの Ansibleをスキップし、どのチェックを常に適用するかを一元的に制御できます。つまり、単一の設定ポイントからすべてのユーザーにルールを適用したり、冗長と思われる一部のルールをスキップしたりすることができます。 たとえば、Spotterが潜在的なリスクを検出し、それを評価して受け入れた場合、今後はそれをスキップするように決定できます。 チェックをスキップまたは強制する場合、以下の 3 ...