PowerVS IBM i 日記(20): IBM Cloud CLI で PowerVS に アクセスする

# IBM Cloud CLI で PowerVS に アクセスする
これまでは IBM Cloud のポータルから操作を行ってきました。
今回は処理の自動化を目指し、IBM Cloud CLI で PowerVS に アクセスする方法を確認します。
IBM Cloud CLI を使うと、Windows、Mac、Linux のコマンド・ラインから IBM Cloud の資源を表示・操作することができます。


他の Qiita の記事では Mac が多いようですが、ここでは Windows をクライアントにします。
また、IBM Cloud CLI 導入済みであることを前提とした記事が多いようですので、今回は一からセットアップを行いたいと思います。

## IBM Cloud CLI と power-iaas/pi プラグインの導入

まず、IBM Cloud CLI  と PowerVS を操作するための power-iaas/pi プラグインを導入します。

IBM Cloud CLI のインストール方法は、下記にガイドされています。

* [スタンドアロン IBM Cloud CLI のインストール](https://cloud.ibm.com/docs/cli?topic=cli-install-ibmcloud-cli)

GitHub にある「インストーラーを使用したインストール」と PowerShell から直接インストール出来る「シェルからのインストール」の二つの方法がガイドされています。

今回は「シェルからのインストール」に従います。

PowerShell で下記を実行します。

```
iex(New-Object Net.WebClient).DownloadString('https://clis.cloud.ibm.com/install/powershell')
```

導入されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/c63f3774-6c4b-2e7a-d060-94844daa2474.png)

PowerVS を操作するには、PowerVS 用のプラグインが必要です。

プラグインの導入方法は下記に説明があります。

* [プラグインを使用した IBM Cloud CLI の拡張](https://cloud.ibm.com/docs/cli?topic=cli-plug-ins)

先ほど導入した ibmcloud コマンドでプラグインの一覧を表示します。

```
ibmcloud plugin repo-plugins -r "IBM Cloud"
```

「power-iaas/pi」という名前が確認出来ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/5e00c654-4569-d44e-176b-59b22d95b31e.png)


プラグインを導入しましょう。

```
ibmcloud plugin install power-iaas
```

導入されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/bec9fb55-b337-072b-d115-6582e0a64e44.png)

別名の「pi」で導入してみます。

```
ibmcloud plugin install pi
```

導入済みであると表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/8c388563-fbff-b744-75a0-2ec7a321c6bd.png)

導入済みプラグインをリストします。

```
ibmcloud plugin list
```

「power-iaas」の「0.3.0」が導入済みであることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/bf247ffa-59b2-5aff-998d-fa4f9d0b6631.png)

IBM Cloud CLI と プラグインが更新されている場合があります。
IBM Cloud 側とクライアントの IBM Cloud CLI やプラグインのバージョンの不整合により、期待通りの結果が得られないことがあります。
更新を適用するには重要です。


IBM Cloud CLI のバージョンは下記で確認できます。

```
ibmcloud -v
```
表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/96416a75-810a-4c2e-e858-d58d69ff9a15.png)

IBM Cloud CLI の更新は下記で行います。

```
ibmcloud update
```

導入したばかりなので、最新ですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/2f1bfe8d-40c7-f454-9568-0e28b6a171f1.png)

プラグインの更新は、こちらです。

```
ibmcloud plugin update
```
やはり最新です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/54fb0741-81f3-0673-82bf-7072fb478ecb.png)

## API キー の作成

API キーを使えば、IBM Cloud の認証方法によらす、ログインを自動化できます。
API キーに関しては下記でガイドされています。

* [ユーザーの API キーの管理](https://cloud.ibm.com/docs/account?topic=account-userapikey)

このページでは下記のように述べられています。

> フェデレーテッド・ユーザーでも非フェデレーテッド・ユーザーでも、API キーを作成し、CLI で使用したり、ご使用のユーザー ID でのログインを自動化する一環として使用したりできます。

コンソールで「管理」→「アクセス (IAM)」→「API キー」に移動します。 このページで、自分の IBM Cloud API キーを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/354c4764-8028-088a-3266-f158f0bb96f1.png)

名前を付けて API キーを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/4768bcf7-c5dc-21f4-7325-e361b8f2f6e1.png)

API キーをコピーやダウンロードするためのダイアログが表示されます。
API キーを入手できるのは、このタイミングだけです。時間内にコピーやダウンロードをします。
間に合わなかった場合は別の API キーを作成してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/c2433e5a-cd78-8973-49c2-97f9cba43bb3.png)

## IBM Cloud CLI へのログイン

「ibmcloud login」がログイン用のコマンドです。パラメーターは、下記にガイドされています。

*  [汎用 IBM Cloud CLI (ibmcloud) コマンド - ibmcloud login](https://cloud.ibm.com/docs/cli?topic=cli-ibmcloud_cli#ibmcloud_login)

> ibmcloud login [-a API_ENDPOINT] [--sso] [-u USERNAME] [-p PASSWORD] [--apikey KEY | @KEY_FILE] [--no-iam] [-c (ACCOUNT_ID | ACCOUNT_OWNER_USER_ID) | --no-account] [-g (RESOURCE_GROUP_NAME | RESOURCE_GROUP_ID)] [-r REGION | --no-region] [-o ORG] [-s SPACE]

パスワード認証を使っている場合は「-p PASSWORD」でも自動ログインが可能ですが、API キーを使えば、外部認証のフェデレーテッド・ユーザーでも自動ログインが可能です。
そのため、今回は、 API キーでの自動ログインの手順を紹介しています。

コマンドに直接 API キーを指定する場合、下記の指定になります。

```
ibmcloud login --apikey [API キー] -u [ユーザー名]
```

API キーをファイルに保存し、利用することもできます。
例えば、API キーを「apykey.txt」という名前のファイルに保管したとします。
この場合、下記でログイン可能になります。

```
ibmcloud login --apikey @apykey.txt -u [ユーザー名]
```

## IBM Cloud CLI で PowerVS にアクセスする

実際に IBM Cloud CLI で PowerVS を操作する場合は「power-iaas」は使用せず「ibmcloud **pi** XXXX」と実行します。

power-iaas プラグインのリファレンスは、こちらです。
執筆時点では、表示言語として日本語を選択するとドイツ語のページが表示されるので、英語での表示を選択したほうがいいでしょう。

* [IBM® Power Systems™ Virtual Server CLI Reference](https://cloud.ibm.com/docs/power-iaas-cli-plugin?topic=power-iaas-cli-plugin-power-iaas-cli-reference&locale=en)


「ibmcloud pi help」で power-iaas プラグインのコマンド一覧が表示されます。

```
ibmcloud pi help
```

```
C:\Users\YASUHIROOnoda>ibmcloud pi help
名前:
  ibmcloud pi - IBM Cloud Power Virtual Server サービスの管理

使用法:
  ibmcloud pi command [arguments...] [command options]

コマンド:
  image, img                           イメージの詳細を表示します
  image-create, imgc                   このアカウント内のイメージ・カタログからイメージのコピーを作成します
  image-delete, imgd                   イメージをこのアカウントから削除します
  image-export, imgex                  イメージを IBM Cloud Object Storage からエクスポート
  image-import, imgi                   イメージを IBM Cloud Object Storage からインポートします
  image-list-catalog, imglc            リージョン・イメージ・カタログ内で使用可能なイメージをリストします
  images, imgs                         このアカウントのすべてのイメージをリストします
  instance, in                         サーバー・インスタンスの詳細を表示します
  instance-capture, incap              サーバー・インスタンスの取り込み
  instance-create, inc                 サーバー・インスタンスを作成します
  instance-delete, ind                 サーバー・インスタンスを削除します
  instance-get-console, ingc           インスタンスのコンソールを取得
  instance-hard-reboot, inhrb          インスタンスのオペレーティング・システムのハード再始動
  instance-immediate-shutdown, inist   サーバー・インスタンスを即時にシャットダウンします
  instance-list-volumes, inlv          インスタンスに接続するボリュームのリストを取得
  instance-operation, inop             Perform an operation on an IBMi server instance.
  instance-reset-state, inrst          サーバー・インスタンスのリセット - 注意が必要です
  instance-soft-reboot, insrb          インスタンスのオペレーティング・システムのソフト再始動
  instance-start, instr                サーバー・インスタンスを開始します
  instance-stop, instp                 サーバー・インスタンスを停止します
  instance-update, inu                 サーバー・インスタンスを更新します
  instances, ins                       すべてのサーバー・インスタンスをリストします
  key                                  鍵の詳細を表示します
  key-create, keyc                     RSA 公開鍵をインポートします
  key-delete, keyd                     鍵を削除します
  key-update, keyu                     鍵の名前を更新します
  keys                                 すべての鍵をリストします
  network, net                         ネットワークの詳細を表示します
  network-create-private, netcpr       プライベート・ネットワークを作成します
  network-create-public, netcpu        パブリック・ネットワークを作成します
  network-delete, netd                 ネットワークを削除します
  network-update, netu                 ネットワークを更新します
  networks, nets                       すべてのネットワークをリストします
  service-list, sl                     このアカウントおよびリージョンのすべてのサービスをリストします
  service-target, st                   サービスをターゲットにします
  storage-types, stypes                ターゲット・リージョンのすべてのストレージ・タイプをリストします
  volume, vol                          ボリュームの詳細を表示します
  volume-attach, volat                 ボリュームをインスタンスに接続
  volume-create, volc                  ボリュームを作成します
  volume-delete, vold                  ボリュームを削除します
  volume-detach, voldt                 ボリュームをインスタンスから切り離します
  volume-update, volu                  ボリュームを更新します
  volumes, vols                        すべてのボリュームをリストします
  help, h                              ヘルプを表示します

コマンドについて詳しくは、'ibmcloud pi help [command]' と入力してください。
```

実際にアクセスしてみましょう。

現在、私は、2 か所に PowerVS のリソースを持っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/8e2f2c62-1356-6ab3-dfaf-29229baffcbd.png)

CLI で確認します。

```
ibmcloud pi service-list
```

確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/737c9646-4ea8-f62a-27bd-7313c3826d4f.png)


表示された crn を使って「SYD04」を操作対象にしましょう。

```
ibmcloud pi service-target [crn]
```

設定されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/33445e2b-36f6-aa61-979b-11316e790d42.png)

指定した「SYD04」には 2 つのインスタンスがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/ef82f080-e4b2-65a7-b97a-f00c1aa75869.png)

インスタンスの一覧を表示しましょう。

```
ibmcloud pi instances
```

表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/d3787dec-a2d0-f7de-6456-17414f4a0724.png)


インスタンスの詳細を表示しましょう。

```
ibmcloud pi instance [インスタンスID]
```

表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/c8b96f0b-8984-534b-8df8-876e5eebee4d.png)


正しく、アクセスできているようです。

---
当日記のIndexは[こちら](https://qiita.com/6onoda/items/f146c78c0c1bbe905a42)です。

---
許可の無い転載を禁じます。
この記事は筆者の個人的な責任で無保証で提供しています。
当記事に関してIBMやビジネスパートナーに問い合わせることは、固くお断りします。