retire-machine について
Retire machineは、必要な作業を保持し、マシンへの参照とアクセスを取り除きながら退役させる手順をエージェントに示します。サーバーの廃止を進めるユーザー向けで、アカウント権限の取り消しとプロバイダー上の削除はユーザーが行います。
主な機能
- 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 の逆です。このスキルではマシンにキー、セッション、設定を付与しますが、こちらでは、最後のステップまでマシンに接続できる状態を保つ順序で、それらを取り除きます。プロバイダーでマシンを削除するのはユーザーです。削除は取り消せないため、エージェントは削除しません。
パラメーター
<session-host>:エージェントのセッションを実行する場所です。例:herdr。エージェントがマシンに接続する手段でもあります。<notification-method>:ユーザーへの通知方法です。その設定で、マシンが送信元として指定されている場合があります。
手順
- 記録を確認します。 マシンについてユーザーが何を書いたかを確認します。ワークステーションのリポジトリは
~/.config/agents/source.mdに記載されているので、そのリポジトリで、このファイルを参照しているすべてのファイル、マシンの削除に関するチェックリスト、マシンを廃止するイシューを読みます。置き換えるマシンがあれば、それも確認します。- ポインターにワークステーションのリポジトリが記載されていない場合: マシンに関するメモをどこに保管しているか、ユーザーに一度だけ尋ねるか、マシン自体に表示される情報から作業を進めます。
- 何も変更せずに現状を把握します。 まずセッションホストの状態、つまりワークスペース、ペイン、エージェントを確認します。ペインの出力を読みますが、キーやプロンプトは送信しません。また、停止中のエージェントは起動しません。セッションを再開すると、コンテキスト全体が再読み込みされるためです。その後、自分のコマンドを実行するために、マシン上に新しいワークスペースを開きます。他の人が使っているペインには入力しないでください。以下を収集します。
- 作業内容: ホームフォルダー内のすべての Git リポジトリと、それぞれの未コミットファイル、未プッシュのコミット、スタッシュ、アップストリームのないブランチ。リモートのないリポジトリは未プッシュとして扱います。
- リポジトリ外のファイル: ホームフォルダー内の表示されている項目と、
~/.local/share内のアプリケーションデータ。 - サービス: コンテナーとそのボリューム、リッスン中のポート、有効になっているシステムサービスとユーザーサービス、cron ジョブ、タイマー。Web サービスは気づかれないまま何週間も稼働していることがあります。ポート 80 または 443 が使われている場合は、そのサービスが提供している名前を確認するため、プロキシ設定を読みます。
- 外部からの参照: ドメイン名(
<ip>.sslip.ioのように IP から作られた名前を含む)、許可リスト、tailnet デバイス、GitHub 上の SSH キーとデプロイキー、そのマシン用に作成されたトークン、そしてユーザーの他のマシンにある、セッションホストに保存されたマシン、通知方法の送信者リスト、~/.ssh/config、known_hosts。
- 項目ごとに1行の計画を1つ提示します。 維持する項目とその保存先、置き換え先に移す項目、または手放す項目を記載します。記録から判断できない項目については、ユーザーに一度だけ尋ねます。また、プロバイダーのスナップショットを保持するかどうかも尋ねます。スナップショットには毎月少額の費用がかかり、プロバイダーが販売を終了したプランは再購入できない場合があります。
- 保存します。 停止する前に、計画で維持または移動するデータを保存し、それぞれのコピーが届いたことを確認します。
- 次の順序で接続を解除します。 マシンへのアクセスに使うため、セッションホストに保存されたマシンは最後に解除します。
- 計画で手放すサービスを停止します。
- マシンを tailnet から外します。マシン上で
tailscale logoutを実行し、その後、管理コンソールでデバイスが消えていることを確認します。 - 通知方法の送信者リストと、ユーザーの他のマシンにある
~/.ssh/configからマシンを削除します。ssh-keygen -R <host>でマシンのホストキーを削除します。 - アカウントへのアクセスを取り消すコマンドをユーザーに伝えます。対象は、そのマシンの GitHub 用 SSH キーとデプロイキー(
gh ssh-key listを実行してからgh ssh-key delete <id>)、およびそのマシン用に作成された各トークンです。アカウントにアクセスできるユーザーを変更するため、ルール表ではエージェントによるこれらのコマンドの実行が禁止されています。 - マシン上のワークスペースを閉じてから、保存されたマシンを削除します。Herdr の場合は、ラベルが拒否されるため、
herdr machine listに表示される32文字の ID を指定してherdr machine remove <id>を実行します。
- 削除をユーザーに引き継ぎます。 プロバイダーのコンソールへのリンクをユーザーに伝え、必要な作業を説明します。計画でスナップショットを保持する場合は、まずスナップショットを作成し、その後サーバーを削除します。停止したサーバーにも料金が発生し、請求が終了するのは削除したときだけです。完了したらユーザーに確認してもらいます。
- 記録します。 手順1で見つかった各ファイルに、廃止の記録を独立した変更として残します。マシンが廃止されたこと、日付、作業内容の移動先を記載し、マシン一覧のファイルでは削除するか、廃止済みと記します。マシンを廃止するイシューをクローズします。
- 削除後に確認します。 ユーザーがマシンを削除した後、そのホストが SSH に応答しないことと、プロバイダーのコンソールにサーバーが表示されないことを確認します。どこに何を保存したか、何を手放したか、ユーザーに残っている作業があれば報告します。
コメント
Markdown 対応