運用自動化メモ (1/2)
PowerShell Profile に proxy doctor を組み込んだ
職場 LAN、Akamai VPN、私用 PC、Windows/macOS をまたぐ proxy 設定事故を減らすため、PSProfile に px-state / px-doctor を組み込んだ設計メモ。
職場 PC では社内ネットワーク上で proxy が必須。一方で、リモートワークや外出先では Akamai VPN を使うため proxy は不要。さらに私用 PC では proxy を使わない。
同じプロファイルを全端末で使い回すと、「前の端末で有効にした proxy が残っていて git fetch が固まる」「VS Code だけ proxy が外れていない」といった事故が起きる。
方針#
PSProfile では、変更する操作と観測する操作を分けた。
px-on # 明示的に proxy を有効化
px-off # 現セッションの proxy を解除
px-state # 状態を見るだけ
px-doctor # 詳細診断と次の推奨アクション
px-on/px-offは環境変数(HTTP_PROXYなど)と VS Code の設定を 一緒に 切り替える。片方だけ変わる状態を作らないpx-stateは環境変数・Px プロセス・VS Code 設定の 3 つを並べて表示する。何も変えないpx-doctorはpx-stateに加えて疎通確認を行い、「この端末ではpx-offが要る」のような次の一手を出す
なぜ自動判定にしなかったか#
ネットワークを見て自動で proxy を切り替える案もあったが、採用しなかった。
- VPN の接続状態は端末ごとに取り方が違い、判定を外したときに原因が追えない
- 自動で切り替わると「いま proxy は効いているのか」が分からなくなり、切り分けが遅れる
状態を見えるようにして、必要な変更だけ明示的に行う。この方が結局早い。
端末ごとの差分#
proxy の有無や Px のポートは端末固有なので、プロファイル本体ではなく ~/.psprofile/user-config.ps1 に置く。
プロファイル本体は全端末で同じものを使い、差分はこの 1 ファイルに寄せる。