teleport-discovery について
teleport-discovery は、クラウドリソースを自動検出して Teleport に登録するためのスキルです。Teleport Discovery Service の設定を行うユーザー向けに、Terraform の構成、適用、状態監視、トラブルシューティングを支援し、AWS EC2、AWS EKS、Azure VMs に対応します。
主な機能
- 01クラウドの OIDC 統合を設定
- 02Terraform 設定の作成・更新
- 03検出設定の適用
- 04同期状態の監視
- 05リソース登録の問題を調査
活用シーン
- 01AWS EC2 の自動検出設定
- 02AWS EKS クラスターの検出と登録
- 03Azure VMs の検出設定
- 04登録問題の診断
MCP 対応
入力には MCP との関係について記載がありません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gravitational/ teleport --skill teleport-discoveryインストール後、Claude Code で/teleport-discoveryを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonevals/fixtures/_mocklib.pyevals/fixtures/azure-discovery/main.tfversions.tfevals/fixtures/bin/tshtctlazawsevals/fixtures/existing-project-aws/infra/main.tfversions.tfevals/fixtures/scenarios/monitor-aws-ec2-notenrolled.jsoncloud-azure-no-rg.jsoncloud-azure-management-group.jsoncloud-aws.jsoncloud-generic.jsoncloud-aws-existing-oidc.jsonmonitor-aws-failed-tasks.jsoncloud-azure.jsonselfhosted-no-discovery.jsonmonitor-aws-oidc-error.jsonmonitor-azure-failed.jsonmonitor-aws-healthy.jsonreferences/apply.mdaws-setup.mdazure-setup.mdmonitor.md詳細
Teleport 自動検出
Teleport をクラウドに接続して、リソースを自動的に検出し、登録します。Terraform を使用してクラウドプロバイダーに OIDC 統合を作成し、Teleport Discovery Service を設定します。リソースの登録時に問題が発生した場合は、トラブルシューティングを行います。AWS EC2 インスタンス、AWS EKS クラスター、Azure VMS に対応しています。
コミュニケーション
実行する手順と、それぞれの手順で作成または確認する内容を、1~2 文で伝えてください。その後は、質問するとき、または各手順の結果を報告するときや手順を停止するときに限り、ユーザーに話しかけてください。個々のフィールドの導出、実行したコマンド、中間結果は報告しないでください。
クラウドの判定
何よりも先に CLOUD を設定してください。リクエストに EC2、EKS、または AWS アカウントが含まれている場合は aws と推定します。VM、サブスクリプション、リソースグループ、または管理グループが含まれている場合は azure と推定します。どちらも示されていない場合は、停止してユーザーにクラウドを確認してください。CLOUD が設定されるまでは、aws または az コマンドを実行したり、Terraform を記述したりしないでください。
フィールドの解決
各フィールドは、まずプロンプトから、次にツールによる導出から、最後に Default 列から解決してください。ツールを利用できない場合、結果が曖昧な場合、またはエラーになる場合は、値が得られなかったものとして扱います。フィールドを収集する手順では、フィールドを | Field | Tool derivation | Default | の形式で列挙します。
コマンドでは、ユーザーが指定したパス、または指定がなければ tsh と tctl を使い、$TSH と $TCTL はそれぞれ tsh と tctl のバイナリを表します。
セッションがないために tsh または tctl が失敗した場合は、ユーザーに別のターミナルで $TSH login --proxy=<proxy_addr> を実行してもらい、その後再試行してください。! 接頭辞を付けても、セッション内での対話型ログインは失敗します。
質問
各質問では、たとえば「検出対象の EC2 インスタンスを検索する AWS リージョンを指定してください」のように、その値が最終的な設定のどの部分を制御するかを示してください。デフォルトを最初の選択肢にし、それ以外の選択肢には具体的な値を指定してください。質問文、選択肢のラベル、選択肢の説明は、「こちらで実行する」のようにユーザーの立場で記述してください。主語が単に I または you だと、アシスタントとユーザーのどちらを指すのか曖昧になります。自由形式の値は、組み込みの Other オプションから入力されます。回答を細かくするための追加質問は行わないでください。回答が使用できない場合は、その理由を示して該当する質問だけをもう一度尋ねてください。
AskUserQuestion の呼び出しごとに質問できるのは最大 4 件です。そのため、1 回の質問ラウンドを複数回の連続した呼び出しに分けてもかまいません。リージョン、タグ、サブスクリプションなどの対象範囲を絞り込む質問と、書き込み先や適用方法などの実務的な質問は、それぞれまとめてください。
手順
リクエストで求められた手順を、Setup、Apply、Monitor の順に実行します。「検出をセットアップして」と指示され、範囲がそれ以上限定されていない場合は、3 つすべてを実行します。
セットアップ
Discovery の Terraform を作成、生成、設定、または拡張します。次の共通フィールドを収集したうえで、aws の場合は references/aws-setup.md、azure の場合は references/azure-setup.md に記載されているクラウド固有のフィールドを収集します。cluster_version が確定したら、ユーザーに何かを尋ねる前に、参照先に記載されたバージョン条件を確認します。cluster_version 自体をユーザーに尋ねる必要がある場合は、回答を設定に書き込む前に条件を確認します。write_location をプロンプトで指定していない場合も含め、Ask に該当するすべてのフィールドを収集し、ひとつずつではなく、AskUserQuestion ツールを使って一度にすべて尋ねます。Apply を実行する場合は、references/apply.md に記載されている 2 つの適用に関する質問も同じタイミングで尋ねます。
| フィールド | ツールからの導出方法 | デフォルト |
|---|---|---|
proxy_addr | $TSH status --format=json の active.profile_url から https:// スキームを取り除いた値。例:example.teleport.sh:443 | Ask |
cluster_version | $TCTL status の Version フィールド。例:18.8.0 | Ask |
deployment | proxy_addr のホストが .teleport.sh、.cloud.gravitational.io、または .beams.sh で終わる場合は cloud、それ以外は self-hosted | なし |
discovery_group | cloud:cloud-discovery-group。self-hosted:セルフホスト環境の Discovery グループを参照 | セルフホスト環境の Discovery グループに従って Ask |
write_location | なし | Ask。新しい teleport-discovery/ ディレクトリをデフォルトにします |
セルフホスト環境の Discovery グループ
$TCTL inventory list --services=discovery で Discovery Service が実行中であることを確認し、実行中のものがなければ停止します。インベントリーの出力にはグループが表示されないため、$TCTL get discovery_config --format=json から discovery_group の値を収集し、選択肢として提示します。質問では、その値が、実行中の Discovery Service の設定にある discovery_group と一致する必要があることを伝えます。
書き込み先
新しいプロジェクトに書き込む場合は、write_location ディレクトリに versions.tf と main.tf を含む新しいモジュールを作成します。既存の Terraform プロジェクトに書き込む場合は、その構成に従って統合します。プロジェクトにすでに module "aws_discovery" または module "azure_discovery" ブロックが宣言されている場合は、そのブロックを読み込み、現在の値から収集済みのフィールドを事前に入力して、そのブロックを直接編集します。
適用
references/apply.md に従って Terraform を適用し、リソースを作成します。Terraform がまだ書き込まれていない場合は、その前にセットアップを行います。
監視とトラブルシューティング
ステータスの確認、同期の監視、またはリソースが登録されない原因の診断を行う場合は、references/monitor.md を参照します。