運用自動化メモ (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-doctorpx-state に加えて疎通確認を行い、「この端末では px-off が要る」のような次の一手を出す

なぜ自動判定にしなかったか#

ネットワークを見て自動で proxy を切り替える案もあったが、採用しなかった。

  • VPN の接続状態は端末ごとに取り方が違い、判定を外したときに原因が追えない
  • 自動で切り替わると「いま proxy は効いているのか」が分からなくなり、切り分けが遅れる

状態を見えるようにして、必要な変更だけ明示的に行う。この方が結局早い。

端末ごとの差分#

proxy の有無や Px のポートは端末固有なので、プロファイル本体ではなく ~/.psprofile/user-config.ps1 に置く。 プロファイル本体は全端末で同じものを使い、差分はこの 1 ファイルに寄せる。