IBM Cloud: Classic InfrastructureのslcliコマンドをCentOS7でセットアップする


#1. はじめに
IBM Cloudのコマンドはibmcloudに統合されつつあるが、いまだにClassic Infrastructureに限っては旧SoftLayer時代からの産物であるslcliコマンドの方が機能が豊富である。かなり昔々に（もう6年ぐらい前？）セットアップ方法をqiitaに書いた気がするのだが、

- CentOS7などでは未だにpython 2.7が使われている。
- pythonは3.x系が主流となってきており、slcliコマンドもv5.8.1からpython 2.7のサポートがdropされた。

ことを考慮し、Step by Stepで最新のslcliコマンドのセットアップ方法を改めて書いてみた。

#2. Python 3.x環境の構築

前述のとおり、CentOS7ではpython 2.7が未だに使われておりデフォルトで構成されている。python 3.xを導入しても、内部的にpython 2.7が呼ばれては困るので、まずは[この記事](https://qiita.com/kumarstack55/items/d7d26b3be80d774fdebf)に従ってpython 3.xがデフォルトで稼働する仮想環境（venv）を作成する。

```shell:仮想環境の作成
#OSの最新化
[root@syasudacentos7 ~]# yum update -y

#バージョン確認
[root@syasudacentos7 ~]# python -V
Python 2.7.5

#Python 3.6系の導入
[root@syasudacentos7 ~]# yum install -y python3
[root@syasudacentos7 ~]# python3 -V
Python 3.6.8

#venvの作成
[root@syasudacentos7 ~]# mkdir -pv python368
[root@syasudacentos7 ~]# python3 -mvenv python368
```

```shell:venvの動作確認
#venvへのアクセス
[root@syasudacentos7 ~]# source python368/bin/activate

#Pythonのバージョン確認
(python368) [root@syasudacentos7 ~]# python -V
Python 3.6.8

#venvから抜ける
(python368) [root@syasudacentos7 ~]# deactivate
[root@syasudacentos7 ~]#
```

#3. slcliの導入
slicliのrelease notesはhttps://github.com/softlayer/softlayer-python/releases

```shell:slcliの導入
[root@syasudacentos7 ~]# source python368/bin/activate
(python368) [root@syasudacentos7 ~]# pip install --upgrade pip
(python368) [root@syasudacentos7 ~]# pip install SoftLayer
(python368) [root@syasudacentos7 ~]# slcli --version
Current: slcli (SoftLayer Command-line) v5.9.7
Latest:  slcli (SoftLayer Command-line) v5.9.7
```

#4. slcliの設定

事前にClassic InfrastructureのUsernameおよびAPI Keyを確認しておく。
https://cloud.ibm.com/docs/account?topic=account-classic_keys

Manage -> Access(IAM) -> Users -> 該当のユーザーにて確認可能。
- Usernameは、`<account_ID>_<email_address>`の形式であり、VPN password欄に表示されているUser nameを利用する<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/e756a8ea-2227-013f-ac16-71edd45dc106.png)
- API Keyは上記画面からClassic Infrastructure API keyを作成し、以下を参照する<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/0fda7ed9-87c8-2b45-da99-6e8f57e512b9.png)


```shell:slcliセットアップ
(python368) [root@syasudacentos7 ~]# slcli setup
Username []: xxxxxxx_xxxxxxx@xx.xxx.xxx
API Key or Password []:
Endpoint (public|private|custom) [https://api.softlayer.com/xmlrpc/v3.1]: private
Timeout [0]:
:..............:..................................................................:
:         name : value                                                            :
:..............:..................................................................:
:     Username : xxxxxxx_xxxxxxx@xx.xxx.xxx                                      :
:      API Key : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx :
: Endpoint URL : https://api.service.softlayer.com/xmlrpc/v3.1/                   :
:      Timeout : not set                                                          :
:..............:..................................................................:
Are you sure you want to write settings to "/root/.softlayer"? [Y/n]: Y
Configuration Updated Successfully
```

#5. テスト

```
(python368) [root@syasudacentos7 ~]# slcli account summary
:..................................................................:
:                         Account Snapshot                         :
:.........................:........................................:
:                    Name : Value                                  :
:.........................:........................................:
:            Company Name : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx :
:                 Balance : None                                   :
:        Upcoming Invoice : None                                   :
:         Image Templates : 51                                     :
:         Dedicated Hosts : 0                                      :
:                Hardware : 14                                     :
:          Virtual Guests : 66                                     :
:                 Domains : 2                                      :
: Network Storage Volumes : 529                                    :
:            Open Tickets : 5                                      :
:           Network Vlans : 42                                     :
:                 Subnets : 106                                    :
:                   Users : 98                                     :
:.........................:........................................:

```