Windows で Cloudflare WARP のデプロイパラメータを指定する方法

# Windows で Cloudflare WARP のデプロイパラメータを指定するには
以下のようなタイミングで指定することが可能です。

https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/deployment/mdm-deployment/#windows

https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/deployment/mdm-deployment/parameters/

```mermaid:
graph LR

subgraph Before [Before Install]
    BeforeMDM["`C:\ProgramData\Cloudflare\mdm.xml`"]
end
subgraph During [During Install]
    MSI["`msiexec`"]
end
subgraph After [After Install]
direction TB
    GUI[WARP GUI]
    CLI["`warp-cli`"]
    AfterMDM["`C:\ProgramData\Cloudflare\mdm.xml`"]
    GUI ~~~ CLI ~~~ AfterMDM
end

Before --> During --> After

```

# GUI
全てのデプロイパラメータが設定できる形ではありませんが、以下のように最低限の指定が可能です。

- インストール後に GUI で `organization` の指定が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101361/92e1bb89-2f5c-fe96-c95b-594b3bb1800b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101361/31672fc8-df24-6685-7cf4-fff72b85f878.png)

- その後、`service_mode` の指定も可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101361/30515b89-7604-a525-f542-333c7cdcdc20.png)


# CLI

インストール後に `warp-cli` を使ったデプロイパラメータの指定が可能です。

```bat:cmd
warp-cli registration new [ORGANIZATION]
warp-cli mode [SERVICE_MODE]
warp-cli dns endpoint set x.x.x.x
warp-cli api endpoint set y.y.y.y
warp-cli tunnel endpoint set z.z.z.z:port
```

その後も `C:\ProgramData\Cloudflare\settings.json` にある設定は保持されます。

ただし `C:\ProgramData\Cloudflare\mdm.xml` に同じパラメータ項目が存在する場合は `C:\ProgramData\Cloudflare\mdm.xml` が優先されます。

```json:C:\ProgramData\Cloudflare\settings.json
{
  "version": 1,
  "always_on": true,
  "dns_log_until": null,
  "organization": "your-team-name",
  "override_api_endpoint": "2.2.2.2",
  "override_doh_endpoint": "1.1.1.1",
  "override_warp_endpoint": "3.3.3.3:2408"
}
```

# `msiexec`
`msiexec` を使ってインストール実行時にデプロイパラメータを指定することができます。

```bat:cmd
msiexec /i "Cloudflare_WARP_2024.9.346.0.msi" /l msi-install-log.txt /qn ^
ORGANIZATION="your-team-name" ^
SERVICE_MODE="warp" ^
ONBOARDING="false" ^
SWITCH_LOCKED="false" ^
AUTO_CONNECT="0" 

:: set CLIENT_ID='YOUR_CLIENT_ID'
:: set CLIENT_SECRET='YOUR_CLIENT_SECRET'
:: AUTH_CLIENT_ID=%CLIENT_ID%
:: AUTH_CLIENT_SECRET=%CLIENT_SECRET%
:: OVERRIDE_WARP_ENDPOINT="x.x.x.x:port"
:: OVERRIDE_API_ENDPOINT="y.y.y.y"
:: OVERRIDE_DOH_ENDPOINT="z.z.z.z" 
:: SUPPORT_URL='https://xxx.example.com'
```

インストール後は `C:\ProgramData\Cloudflare\mdm.xml` に保存されます。

```xml:C:\ProgramData\Cloudflare\mdm.xml
<dict>
  <key>auto_connect</key>
  <integer>0</integer>
  <key>switch_locked</key>
  <false />
  <key>organization</key>
  <string>your-team-name</string>
  <key>service_mode</key>
  <string>warp</string>
  <key>onboarding</key>
  <false />
</dict>
```

# `mdm.xml` 

インストール前、もしくはインストール後に `mdm.xml` を `C:\ProgramData\Cloudflare\mdm.xml` に配置することでデプロイパラメータを指定することができます。

また、この方式では、複数のパラメータ設定を用意して、柔軟に切り替えられるように構成することも可能です。

https://qiita.com/khayama/items/e13aae87bdccc8a303e5

## インストール前
`C:\ProgramData\Cloudflare` フォルダを作成して、事前に `mdm.xml` を配置しておくことでデプロイパラメータを指定できます。

```bat:cmd
mkdir C:\ProgramData\Cloudflare
```

https://gist.github.com/kyouheicf/a4f67f422b0072605770a2ee358574a8


## インストール後
`C:\ProgramData\Cloudflare\mdm.xml` に配置することで、自動でデプロイパラメータの設定が読み込まれます。

```xml:mdm.xml.example
<array>
  <dict>
    <key>organization</key>
    <string>mycompany</string>
    <key>display_name</key>
    <string>Production environment</string>
  </dict>
  <dict>
    <key>organization</key>
    <string>mycompany</string>
    <key>override_api_endpoint</key>
    <string>203.0.113.0</string>
    <key>override_doh_endpoint</key>
    <string>203.0.113.0</string>
    <key>override_warp_endpoint</key>
    <string>203.0.113.0:2408</string>
    <key>display_name</key>
    <string>Cloudflare China network</string>
  </dict>
  <dict>
    <key>organization</key>
    <string>test-org</string>
    <key>display_name</key>
    <string>Test environment</string>
  </dict>
</array>
```

# 参考：アンインストール
Cloudflare WARP のアンインストールは、ダウンロードした `msi` を使って以下のように実行できます。

```bat:cmd
msiexec /x "Cloudflare_WARP_2024.9.346.0.msi" /l msi-uninstall-log.txt /qn 
```

または、コントロールパネルの「プログラムのアンインストール」からも削除できます。

https://qiita.com/rohinomiya/items/34449a98c38441f3a4df

```bat:cmd
appwiz.cpl
```