Cloudflare WARP を複数の組織で簡単に切り替える

# 目的
こちらの内容を実際に確認して、UI で簡単に切り替えられるかを見ます。

- [Switch between Zero Trust organizations · Cloudflare Zero Trust docs](https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/deployment/mdm-deployment/switch-organizations/)

:::note info
これまでは組織を切り替えるためには、ログアウト・ログインの処理が必要で、その度に Cloudflare Zero Trust アカウントごとに固有の組織名を入力する必要がありました。

また、MDM ファイルを利用する場合では、アンインストール・再インストールの上で更新した MDM ファイルを再度読み込ませる必要があったりしました。
:::

# これまでの MDM ファイル
こちらの記事を参考にしてください。

- [Cloudflare WARP クライアントの自動登録を macOS で確認する #cloudflare - Qiita](https://qiita.com/khayama/items/ac3ed53afc56381c5f08)

`<dict>...</dict>` の単位で登録可能な組織は1つだけでした。

```xml:com.cloudflare.warp.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>organization</key>
    <string>$ORG_NAME</string>
</dict>
</plist>
```

# 複数の組織を登録した MDM ファイル
以下のような形で `array` の中に複数の `dict` を登録できます。

`<array> <dict>...</dict> <dict>...</dict> </array>`

その際には `display_name` 値の登録も必須になります。

```xml:com.cloudflare.warp.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
    <key>organization</key>
    <string>production-env</string>
    <key>display_name</key>
    <string>Production environment</string>
</dict>
<dict>
    <key>organization</key>
    <string>test-env</string>
    <key>display_name</key>
    <string>Test environment</string>
</dict>
</array>
</plist>
```

# 対応バージョン
macOS では、2023年12月16日にベータリリースした Version 2023.12.292.1 (20231216.5) を使います。

https://install.appcenter.ms/orgs/cloudflare/apps/1.1.1.1-macos/distribution_groups/beta

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101361/2bab4106-63f6-861c-4261-f917eb28d4a5.png)

# macOS にインストールするスクリプト

```shell:
# インストール済みの場合は、アンインストールする
echo Y | /Applications/Cloudflare\ WARP.app/Contents/Resources/uninstall.sh
# アンインストール後に、plist ファイルを削除
sudo rm /Library/Managed\ Preferences/com.cloudflare.warp.plist
# 一定時間待機
sleep 10

# パラメータ設定
export ORG_NAME_1='production-env'
export ORG_NAME_2='test-env'

# MDM ファイル作成
cat << EOS > com.cloudflare.warp.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
    <key>organization</key>
    <string>$ORG_NAME_1</string>
    <key>display_name</key>
    <string>Production environment</string>
</dict>
<dict>
    <key>organization</key>
    <string>$ORG_NAME_2</string>
    <key>display_name</key>
    <string>Test environment</string>
</dict>
</array>
</plist>
EOS

# ファイル形式を変更
plutil -convert binary1 com.cloudflare.warp.plist
# 権限変更
sudo chown root:wheel com.cloudflare.warp.plist
# 所定のフォルダへ移動
sudo mv com.cloudflare.warp.plist /Library/Managed\ Preferences

# ダウンロードした WARP をインストール
sudo installer -pkg ~/Downloads/Cloudflare_WARP.pkg -target /
```

# 複数の組織で簡単に切り替える
以下のように UI の設定メニュー「Switch Configurations」から簡単に切り替えられることを確認できました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101361/cb622186-84e8-03c3-c8c8-6be4ab7f19d0.png)