mcpField
R
retire-machine

retire-machine

github.com/yahyabedirhan云与 DevOps255 次安装6 天前更新
代码仓库

关于 retire-machine

Retire machine 指导 Agent 在保留选定工作并清理机器关联与访问权限的同时退役机器,适合准备停用服务器的用户;账户访问撤销和云服务商删除由用户掌控。

主要功能

  1. 01盘点工作、文件、服务和关联
  2. 02规划保留、迁移或丢弃内容
  3. 03保存并验证需保留的数据
  4. 04断开服务及机器关联
  5. 05由用户撤销账户访问权限

适用场景

  1. 01准备退役一台服务器
  2. 02将选定工作迁移至替代机器
  3. 03在云服务商删除前清理机器关联

安装

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

$npx skills add https://github.com/yahyabedirhan/skills --skill retire-machine

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

详细介绍

退役机器

让机器停止使用,同时不丢失工作,也不留下仍信任这台机器的任何配置。此操作与 /set-up-machine 相反:该技能为机器配置密钥、会话和设置,而此技能会按顺序将它们移除,并确保机器在最后一步之前仍可访问。由用户在提供商处删除机器;Agent 绝不会删除机器,因为删除操作无法撤销。

参数

  • <session-host>:Agent 会话运行的位置,例如 herdr。Agent 也通过它访问机器。
  • <notification-method>:通知发送给用户的方式。其配置可能会将该机器列为发送方。

步骤

  1. 阅读记录。 查找用户关于这台机器写了什么:在指针 ~/.config/agents/source.md 指向的工作站仓库中,阅读所有提及它的文件、删除它的任何检查清单,以及记录退役事宜的问题。注意是否有替代它的机器。
    • 如果指针没有记录工作站仓库: 只询问用户一次,他们把关于这台机器的记录放在哪里;或者根据机器本身显示的信息继续操作。
  2. 盘点,不做任何更改。 先读取会话主机的状态:其工作区、窗格和 Agent。读取窗格的输出;绝不向窗格发送按键或提示词,也绝不启动已停止的 Agent,因为恢复会话会重新加载其全部上下文。然后在这台机器上新建一个工作区,用于执行你自己的命令,这样就不会在别人使用的窗格中输入内容。收集以下信息:
    • 工作: 主目录中的每个 Git 仓库,以及其中未提交的文件、未推送的提交、储藏和没有上游分支的分支。没有远程仓库的仓库也算作有未推送内容。
    • 仓库外的文件: 主目录中可见的条目,以及 ~/.local/share 下的应用数据。
    • 服务: 容器及其卷、监听端口、已启用的系统和用户服务、cron 作业和计时器。Web 服务可能运行数周而不被注意:对于端口 80 或 443,读取代理配置,确认它服务的名称。
    • 入站引用: 域名,包括根据 IP 构建的名称(例如 <ip>.sslip.io);允许列表;tailnet 设备;GitHub 上的 SSH 密钥和部署密钥;为这台机器创建的令牌;以及用户其他机器上保存的会话主机机器、通知方式的发件人列表、~/.ssh/config 和 known_hosts。
  3. 提出一个方案,为发现的每个项目列出一行:保留并说明放在哪里、迁移到替代机器,或舍弃。对于根据记录无法决定的项目,只询问用户一次。还要询问是否保留服务提供商快照。快照每月会产生少量费用,而且服务提供商可能会停售已停止销售的套餐。
  4. 保存方案中要保留或迁移的内容,并确认每份副本都已到位,然后再停止任何服务。
  5. 断开连接,按以下顺序操作。最后才移除会话主机保存的机器,因为你需要通过它访问这台机器。
    1. 停止方案中要舍弃的服务。
    2. 将机器从 tailnet 中移除:在机器上运行 tailscale logout,然后在管理控制台中确认设备已消失。
    3. 从用户其他机器上的通知方式发件人列表和 ~/.ssh/config 中移除它。使用 ssh-keygen -R <host> 移除它的主机密钥。
    4. 告知用户用于撤销这台机器访问其账户权限的命令:GitHub 上的 SSH 密钥和部署密钥(gh ssh-key list,然后运行 gh ssh-key delete <id>),以及为它创建的每个令牌。规则表禁止 Agent 执行这些命令,因为它们会改变哪些人能够访问账户。
    5. 关闭你在这台机器上的工作区,然后移除保存的机器:对于 Herdr,运行 herdr machine remove <id>,其中的 32 位 ID 应使用 herdr machine list 显示的值,因为标签会被拒绝。
  6. 交接删除操作。 向用户提供服务提供商的控制台链接,并说明要执行的操作:如果方案要求保留快照,就先创建快照,然后删除服务器。停止运行的服务器仍会产生费用;只有删除服务器才能停止计费。由用户确认操作已完成。
  7. 记录退役事宜,并将其作为单独的更改记录在步骤 1 找到的每个文件中:注明机器已退役、日期以及其工作迁移到了哪里;如果某个文件列出了机器,则删除或标记该机器。关闭记录退役事宜的问题。
  8. 检查用户删除机器后,确认该主机已无法通过 SSH 访问,并且服务提供商的控制台中已没有服务器。报告哪些内容保存到了哪里、哪些内容已舍弃,以及还有哪些事项需要用户处理。

评论

支持 Markdown