API Connect v2018 ツールキットを使用してプロバイダー組織と所有者を登録してみた

#はじめに
API ConnectではAPI ManagerやCloud ManagerのGUI操作をコマンド実行するためのツールキットが提供されています。
本記事では、ツールキットを使用してプロダイバー組織と所有者を登録する手順を紹介します。

なお、ツールキットの概要や操作方法についてはKnowledge Centerに記載されていますのでそちらもご参照ください。

[Knowledge Center:ツールキットでの作業](https://www.ibm.com/support/knowledgecenter/ja/SSMNED_2018/com.ibm.apic.toolkit.doc/capim_cli_working_with.html)

#環境
サーバーは、API Connect v2018.4.1.5を利用しています。
ツールキットは、Windows10端末から実行しています。

#コマンド実行の流れ

以下の流れで組織、所有者を登録していきます。
1. Cloud Managerへのログイン
2. プロバイダー組織所有者の登録
3. プロバイダー組織の登録


## 1. Cloud Managerへのログイン

プロバイダー組織を作成するためにCloud Managerへのログインが必要となります。

```bash
#変数設定
$ CMC_USER=admin
$ CMC_PASSWORD=Passw0rd!
$ CMC_SERVER=cloud-admin-ui.xx.xx.xx.45.xip.io
$ CMC_PROVIDER_REALM=admin/default-idp-1

#コマンド実行
$ ./apic login --username ${CMC_USER} --password ${CMC_PASSWORD} --server ${CMC_SERVER} --realm ${CMC_PROVIDER_REALM}
cloud-admin-ui.xx.xx.xx.45.xip.io に正常にログインしました
```

## 2. プロバイダー組織所有者の登録

プロバイダー組織を作成する場合には、プロバイダー組織に関する設定情報ファイルを用意しておく必要があります。（定義ファイルの各URL情報については、定義名または、UUID情報で指定することができます）

```bash
#変数設定
$ CMC_SERVER=cloud-admin-ui.xx.xx.xx.45.xip.io
$ CMC_PRVORG_REGISTRY=api-manager-lur

$ PRV_ORG_OWNER_NAME=prv-owner
$ PRV_ORG_OWNER_EMAIL=prv-owner@ibmcloud.com
$ PRV_ORG_OWNER_FNAME=test
$ PRV_ORG_OWNER_LNAME=test
$ PRV_ORG_OWNER_PASSWORD=Passw0rd!

#定義ファイル作成
$ TEMP_FILE=temp_prvorg_owner.yaml
$ echo  type: user								> ${TEMP_FILE}
$ echo  api_version: 2.0.0 						>> ${TEMP_FILE}
$ echo  state: enabled 							>> ${TEMP_FILE}
$ echo  identity_provider: default-idp-2 		>> ${TEMP_FILE}
$ echo  username: ${PRV_ORG_OWNER_NAME}  		>> ${TEMP_FILE}
$ echo  email: ${PRV_ORG_OWNER_EMAIL} 			>> ${TEMP_FILE}
$ echo  first_name: ${PRV_ORG_OWNER_FNAME} 		>> ${TEMP_FILE}
$ echo  last_name: ${PRV_ORG_OWNER_LNAME}  		>> ${TEMP_FILE}
$ echo  password: ${PRV_ORG_OWNER_PASSWORD}  	>> ${TEMP_FILE}
$ echo  user_registry_url: https://${CMC_SERVER}/api/user-registries/admin/${CMC_PRVORG_REGISTRY} >> ${TEMP_FILE}

#コマンド実行
$ ./apic users:create --org admin --server ${CMC_SERVER} --user-registry ${CMC_PRVORG_REGISTRY} ${TEMP_FILE}
prv-owner    [state: enabled]   https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/user-registries/46ce8d53-1eba-4a4e-b7f0-1c303b62d3dc/187dc2b8-76d0-479e-a357-d6a0aefed907/users/b66383ec-043a-4b27-b72f-50cd619186ad
```

設定情報の定義ファイルは、上記のようにコマンドプロンプトで作成することもできますが、任意のテキストエディターで作成してもかまいません。

```bash:temp_prvorg_owner.yaml
type: user
api_version: 2.0.0
state: enabled
identity_provider: default-idp-2
username: prv-owner
email: prv-owner@ibmcloud.com
first_name: test
last_name: test
password: Passw0rd!
user_registry_url: https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/user-registries/admin/api-manager-lur
```



## 3. プロバイダー組織の作成

```bash
#変数設定
$ PRV_ORG_NAME=prv-org
$ PRV_ORG_TITLE=prv-org
$ PRV_ORG_OWNER_NAME=prv-owner
$ CMC_SERVER=cloud-admin-ui.xx.xx.xx.45.xip.io
$ CMC_PRVORG_REGISTRY=api-manager-lur

#定義ファイル作成
$ TEMP_FILE=temp_prvorg.yaml
$ echo  type: org 				> ${TEMP_FILE}
$ echo  api_version: 2.0.0  	>> ${TEMP_FILE}
$ echo  name: ${PRV_ORG_NAME}  	>> ${TEMP_FILE}
$ echo  title: ${PRV_ORG_TITLE} >> ${TEMP_FILE}
$ echo  state: enabled 			>> ${TEMP_FILE}
$ echo  owner_url: https://${CMC_SERVER}/api/user-registries/admin/${CMC_PRVORG_REGISTRY}/users/${PRV_ORG_OWNER_NAME} >> ${TEMP_FILE}

#コマンド実行
$ ./apic orgs:create --server ${CMC_SERVER} ${TEMP_FILE}
prv-org    [state: enabled]   https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/orgs/3e0f3b9f-d1e1-46c6-adc1-28d8b948da29

```

設定情報の定義ファイルは、上記のようにコマンドプロンプトで作成することもできますが、任意のテキストエディターで作成してもかまいません。（定義ファイルの各URL情報については、定義名または、UUID情報で指定することができます）


```bash:temp_prvorg.yaml
type: org
api_version: 2.0.0
name: prv-org
title: prv-org
state: enabled
owner_url: https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/user-registries/admin/api-manager-lur/users/prv-owner
```

#コマンド実行結果確認

登録したプロバイダー組織、ユーザーの詳細情報は、ツールキットを使用して取得することができます。情報取得コマンドでは各URL情報はUUID形式で出力されます。

## プロバイダー組織所有者情報の取得

```bash
#変数設定
$ CMC_SERVER=cloud-admin-ui.xx.xx.xx.45.xip.io
$ CMC_PRVORG_REGISTRY=api-manager-lur
$ PRV_ORG_OWNER_NAME=prv-owner

#コマンド実行
$ ./apic users:get --org admin --server ${CMC_SERVER} --user-registry ${CMC_PRVORG_REGISTRY} ${PRV_ORG_OWNER_NAME}
prv-owner   prv-owner.yaml   https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/user-registries/46ce8d53-1eba-4a4e-b7f0-1c303b62d3dc/187dc2b8-76d0-479e-a357-d6a0aefed907/users/b66383ec-043a-4b27-b72f-50cd619186ad
```

```yaml:prv-owner.yaml
type: user
api_version: 2.0.0
id: b66383ec-043a-4b27-b72f-50cd619186ad
name: prv-owner
title: prv-owner
state: enabled
identity_provider: default-idp-2
username: prv-owner
email: prv-owner@ibmcloud.com
first_name: test
last_name: test
metadata:
  id: de6501db-c6a8-4ab2-bd50-c37079c16024
  name: prv-owner
  username: prv-owner
created_at: '2019-07-09T06:43:02.618Z'
updated_at: '2019-07-09T06:43:02.618Z'
org_url: >-
  https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/orgs/46ce8d53-1eba-4a4e-b7f0-1c303b62d3dc
user_registry_url: >-
  https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/user-registries/46ce8d53-1eba-4a4e-b7f0-1c303b62d3dc/187dc2b8-76d0-479e-a357-d6a0aefed907
url: >-
  https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/user-registries/46ce8d53-1eba-4a4e-b7f0-1c303b62d3dc/187dc2b8-76d0-479e-a357-d6a0aefed907/users/b66383ec-043a-4b27-b72f-50cd619186ad
```


## プロバイダー組織情報の取得

```bash
#変数設定
$ CMC_SERVER=cloud-admin-ui.xx.xx.xx.45.xip.io
$ PRV_ORG_NAME=prv-org

#コマンド実行
$ ./apic orgs:get  --server  ${CMC_SERVER} ${PRV_ORG_NAME}
prv-org   prv-org.yaml   https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/orgs/3e0f3b9f-d1e1-46c6-adc1-28d8b948da29
```

```yaml:prv-org.yaml
type: org
api_version: 2.0.0
id: 3e0f3b9f-d1e1-46c6-adc1-28d8b948da29
name: prv-org
title: prv-org
state: enabled
org_type: provider
owner_url: >-
  https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/user-registries/46ce8d53-1eba-4a4e-b7f0-1c303b62d3dc/187dc2b8-76d0-479e-a357-d6a0aefed907/users/b66383ec-043a-4b27-b72f-50cd619186ad
created_at: '2019-07-09T06:43:03.963Z'
updated_at: '2019-07-09T06:43:03.963Z'
url: >-
  https://cloud-admin-ui.xx.xx.xx.45.xip.io/api/orgs/3e0f3b9f-d1e1-46c6-adc1-28d8b948da29
```

#最後に
ツールキットを使用してプロバイダー組織とその所有者を登録する手順を紹介しました。GUIから作成する場合に比べると、事前に定義ファイルを作成する必要がありますが、環境定義作業を自動化したい場合には、ツールキットを活用することで実現できますので参考にしていただければと思います。