[IBMCloud] IBMCloud CLI Pluginのイメージダウンロードとオフラインインストール方法

## 目的
IBMCloud CLIはインターネットにつながっている場合、コマンドで簡単にインストールとアップデートが可能。しかし、インターネットにつながっていない場合、イメージのダウンロードと手動でインストールを実行する必要があるため、本記事に記載する。

## IBMCloud CLI本体のダウンロード
CLIの本体は下記からダウンロードすることができるため、インターネット接続端末から
インストール先に合うイメージをダウンロードしてインストールする
[IBM-Cloud/ibm-cloud-cli-release](https://github.com/IBM-Cloud/ibm-cloud-cli-release)

なお、インターネットに接続された端末にインストールする場合は、下記の通り
[スタンドアロン IBM Cloud CLI のインストール](https://cloud.ibm.com/docs/cli?topic=cli-install-ibmcloud-cli&locale=ja)

## Pluginのダウンロード
インストール先のOSと同じOSでダウンロードすれば専用のイメージがダウンロードされる
インストール先と同じOSが用意できない場合は、ダウンロードURLを直接指定する必要がある

ダウンロードに関するDocsとしては下記に記載がある
[ibmcloud プラグインのダウンロード](https://cloud.ibm.com/docs/cli?topic=cli-ibmcloud_commands_settings#ibmcloud_plugin_download)
[IBM Cloud CLI に関する FAQ](https://cloud.ibm.com/docs/cli?topic=cli-ibm-cli-faq#cli-install-download-local)

例：
⭕️
インストール先(RedHat)
ダウンロード端末（RedHat)

❌
インストール先(Windows)
ダウンロード端末（RedHat)
(インストール先とダウンロード元端末のOSが異なるため、ダウンロードURLを直接指定する）

今回は、"container-registry"のPluginをダウンロードしてインストールする例で記載する
下記コマンドにてダウンロード可能なバージョンを確認可能
```
ibmcloud plugin repo-plugin <Plugin名> -r 'IBM Cloud'
```

"container-registry"を確認
```
# ibmcloud plugin repo-plugin container-registry -r 'IBM Cloud'

リポジトリー 'IBM Cloud' から 'container-registry' を検索しています...

名前:              container-registry[cr]
説明:              Manage IBM Cloud Container Registry content and configuration.
会社名:            IBM
ホーム・ページ:    https://icr.io
作成者:
バージョン:        バージョン   アーキテクチャー                                                              最小限の CLI バージョンは必要ありません
                   1.3.12       win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.3.11       win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.3.10       win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.3.8        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.3.7        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.3.5        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.3.4        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.3.1        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.2.2        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.1.0        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.0.11       win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.0.10       win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.0.8        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.0.6        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.0.5        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.0.2        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   1.0.1        win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   0.1.587      win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   0.1.585      win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   0.1.584      win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   0.1.583      win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
                   0.1.582      win32, win64, linux32, linux64, osx, osx-arm64, ppc64le, s390x, linux-arm64   N/A
タグ:

```

次に1.3.5のイメージをダウンロードする
```
# ibmcloud plugin download container-registry -v 1.3.5
リポジトリー 'IBM Cloud' から 'container-registry' を検索しています...
プラグイン 'container-registry[cr] 1.3.5' がリポジトリー 'IBM Cloud' 内で見つかりました
バイナリー・ファイルをダウンロードしようとしています...
 12.08 MiB / 12.08 MiB [==================================================================================================================================================================================] 100.00% 1s
12668928 バイトがダウンロードされました
```

また、別OS用のイメージをダウンロードするには直接URLを指定する
下記の例は64bit Windows用のプラグイン
```
# ibmcloud plugin download https://download.clis.cloud.ibm.com/ibm-cloud-cli-plugin/container-registry/1.3.5/container-registry-windows-amd64-1.3.5.exe
バイナリー・ファイルをダウンロードしようとしています...
 12.41 MiB / 12.41 MiB [==================================================================================================================================================================================] 100.00% 2s
13015040 バイトがダウンロードされました
```

下記の例は64bit Linux用のプラグイン
```
# ibmcloud plugin download https://download.clis.cloud.ibm.com/ibm-cloud-cli-plugin/container-registry/1.3.5/container-registry-linux-amd64-1.3.5
バイナリー・ファイルをダウンロードしようとしています...
 12.08 MiB / 12.08 MiB [==================================================================================================================================================================================] 100.00% 0s
12668928 バイトがダウンロードされました
```

## Pluginのインストール
ダウンロードしたファイルを指定して"ibmcloud plugin install"を実行する
```
# ls
container-registry-linux-amd64-1.3.5  redhat_subscription.log

# ibmcloud plugin install ./container-registry-linux-amd64-1.3.5
バイナリーをインストールしています...
プラグイン 'container-registry 0.1.582' は既にインストールされていました。 'container-registry[cr] 1.3.5' で更新しますか? [y/N] > y
OK
プラグイン 'container-registry 1.3.5' は /root/.bluemix/plugins/container-registry に正常にインストールされました。 'ibmcloud plugin show container-registry' を使用して詳細を表示してください。
```