mcpField
T
teleport-discovery

teleport-discovery

github.com/gravitational云与 DevOps21.0k48 次安装9 周前更新
代码仓库

关于 teleport-discovery

teleport-discovery 是用于将云资源自动发现并接入 Teleport 的技能,面向配置和维护 Teleport Discovery Service 的用户。它涵盖 Terraform 配置、应用、状态监控与故障排查,支持 AWS EC2、AWS EKS 和 Azure VM。

主要功能

  1. 01配置云端 OIDC 集成
  2. 02生成或更新 Terraform 配置
  3. 03应用发现配置
  4. 04监控同步状态
  5. 05排查资源未接入问题

适用场景

  1. 01为 AWS EC2 配置自动发现
  2. 02发现并接入 AWS EKS 集群
  3. 03为 Azure VM 配置发现
  4. 04诊断资源接入故障

MCP 相关

该输入未说明与 MCP 的关系。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gravitational/teleport --skill teleport-discovery

安装后在 Claude Code 中输入/teleport-discovery确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
evals.json
evals/fixtures/
_mocklib.py
evals/fixtures/azure-discovery/
main.tf
versions.tf
evals/fixtures/bin/
tsh
tctl
az
aws
evals/fixtures/existing-project-aws/infra/
main.tf
versions.tf
evals/fixtures/scenarios/
monitor-aws-ec2-notenrolled.json
cloud-azure-no-rg.json
cloud-azure-management-group.json
cloud-aws.json
cloud-generic.json
cloud-aws-existing-oidc.json
monitor-aws-failed-tasks.json
cloud-azure.json
selfhosted-no-discovery.json
monitor-aws-oidc-error.json
monitor-azure-failed.json
monitor-aws-healthy.json
references/
apply.md
aws-setup.md
azure-setup.md
monitor.md

详细介绍

Teleport 自动发现

将 Teleport 连接到云端,即可自动发现并注册资源。使用 Terraform 在云服务提供商中创建 OIDC 集成,并配置 Teleport Discovery Service。排查资源注册过程中遇到的问题。支持 AWS EC2 实例、AWS EKS 集群和 Azure VMS。

沟通

开头用一两句话说明将运行哪些流程,以及每个流程会生成或检查什么。之后,仅在向用户提问,以及报告每个流程的结果或停止时与用户交流。不要报告单个字段的推导过程、运行过的命令或中间结果。

确定云平台

首先设置 CLOUD。如果请求提到了 EC2、EKS 或 AWS 账户,则推断为 aws。如果请求提到了 VMs、订阅、资源组或管理组,则推断为 azure。如果请求没有暗示任何一种云平台,则停止并询问用户使用哪种云平台。在设置 CLOUD 之前,不要运行 aws 或 az 命令,也不要编写 Terraform。

确定字段值

首先从提示词中确定每个字段的值,然后根据工具推导确定,最后使用 Default 列中的值。工具不可用、存在歧义或报错时,视为没有返回结果。收集字段的流程会以 | Field | Tool derivation | Default | 的格式列出字段。

在命令中,$TSH 和 $TCTL 分别代表 tsh 和 tctl 二进制文件;使用用户提供的路径,否则使用 tsh 和 tctl。

如果 tsh 或 tctl 因缺少会话而失败,请让用户在单独的终端中运行 $TSH login --proxy=<proxy_addr>,然后重试。即使使用 ! 前缀,交互式登录也会在当前会话中失败。

提问

每个问题都要说明该值会控制最终配置中的什么内容,例如:“要让发现功能在哪些 AWS 区域中搜索 EC2 实例?”将默认值设为第一个选项,并提供具体的其他选项。问题文本、选项标签和选项描述都要使用用户的口吻,例如“替我运行”,因为只说“我”或“你”无法区分指的是助手还是用户。自由格式的值通过内置的 Other 选项提供。不要通过后续提问来进一步 уточ定答案。如果答案不可用,说明原因,并重新询问该问题。

每次调用 AskUserQuestion 最多可包含 4 个问题,因此一轮可能需要连续多次调用:将匹配范围问题(如区域、标签和订阅)归为一组,将执行安排问题(如写入位置和应用选择)归为一组。

流程

按请求中的顺序运行所需流程:Setup、Apply,然后是 Monitor。若用户只说“设置发现功能”,且未指定更具体的范围,则运行全部三个流程。

设置

编写、生成、配置或扩展用于发现的 Terraform。先收集这些通用字段,再根据云服务提供商,查阅 references/aws-setup.md 中的 aws 专属字段,或 references/azure-setup.md 中的 azure 专属字段。cluster_version 确定后,立即运行参考文档中的版本门禁,然后再询问用户任何问题。如果必须询问用户 cluster_version,则在写入前对答案运行门禁。收集所有需要询问的字段,包括提示中未指定 write_location 时的该字段,然后使用 AskUserQuestion 工具在同一轮中一次性询问,不要逐个询问。如果将运行 Apply,则将 references/apply.md 中的两个 Apply 问题也放在同一轮中。

字段工具推导方式默认值
proxy_addr$TSH status --format=json 中的 active.profile_url,去掉 https:// 协议前缀,例如 example.teleport.sh:443询问
cluster_version$TCTL status 的 Version 字段,例如 18.8.0询问
deployment如果 proxy_addr 的主机名以 .teleport.sh、.cloud.gravitational.io 或 .beams.sh 结尾,则为 cloud,否则为 self-hosted无
discovery_groupcloud:cloud-discovery-group。self-hosted:参见自托管发现组询问,按自托管发现组的说明处理
write_location无询问,默认新建 teleport-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" 块,则读取该块,根据其中当前值预填已收集的字段,并直接编辑该块。

Apply

使用 references/apply.md 将 Terraform 应用到资源创建中。如果 Terraform 尚未编写,则先执行设置。

监控与故障排查

使用 references/monitor.md 检查状态、监视同步,或诊断资源未能注册的原因。

评论

支持 Markdown