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