SoftLayerのユーザーをslcliを使って削除や無効化する方法

# SoftLayerのユーザーをslcliを使って削除や無効化する

９月も最終日。そろそろユーザー一覧の棚卸しをしないとな。
ということで、ユーザー数も多いし新しく統合されたポータルだとSoftLayerIDをベースにメンテするのつらいな、ということで
久々にslcliを使ってみることにしました。

slcliについては、@MahoTakaraさんの[pyenv と slcli コマンドをインストールする手順](https://qiita.com/MahoTakara/items/cbd861112b00da82c95b)を参考にしてください。

今どきは `IBM id`がメインですが、今回は`SoftLayer ID`のみで
IBM Cloudを運用しているアカウントを題材にしています。

## ユーザー一覧を取得する

```bash
$ slcli user list --columns id,username,email,displayName,status  
```

こんな感じの一覧がずらずらでます

```
:.........:.............................:.......................................:................:..........:
:    id   :           username          :                 email                 :  displayName   :  status  :
:.........:.............................:.......................................:................:..........:
:  XXXXXX :           SL999999          :     KANRI@SUGOIKAISYA.co.jp           :     SUGOIK     :  Active  :
:.........:.............................:.......................................:................:..........:
```

## ユーザーを削除する
削除コマンドはコマンド１行で簡単に消えます。
なので`慎重に、IDを間違わないように`しましょう。


```bash
$ slcli user delete {ID}
```

## ユーザーを無効にする

参考) userStatusIdの値を確認すると、1002が** DISABLED ** フラグのようです。
今回はこのパラメーターを与えてユーザー情報を編集します。

JSON形式で、パラメーターは[リファレンス](https://sldn.softlayer.com/reference/datatypes/SoftLayer_User_Customer/)を参考にしてください

```bash
$ slcli user edit-details {ID} -t '{"userStatusId" :  1002}'
```

### 参考） 大量に無効にする
IDを大量に~~虐殺したくなる~~しなければならない時があるときは、
以下の用なFor分で消す必要のあるUserIDを改行区切りで食べさせてあげましょう


```bash
$ for i in `cat disable-users.txt `
> do
> slcli user edit-details $i -t '{"userStatusId" :  1002}'
> done
```

### 参考) userStatusIdの値を確認する
いきなり`1002`って番号って何？！って思ったので、もう少し調べてみました。
以下コマンドを使うと、一覧が取れます。
そうです。戻したければ`1001`に変えればDisableに~~~うっかり~~~してしまったIDをもどすことができます。

```
$ slcli --format=json call-api SoftLayer_User_Customer_Status getAllObjects
[
    {
        "keyName": "ACTIVE", 
        "id": 1001, 
        "name": "Active"
    }, 
    {
        "keyName": "DISABLED", 
        "id": 1002, 
        "name": "Disabled"
    }, 
    {
        "keyName": "INACTIVE", 
        "id": 1003, 
        "name": "Inactive"
    }, 
    {
        "keyName": "PENDING", 
        "id": 1004, 
        "name": "Pending"
    }, 
    {
        "keyName": "SUSPENDED", 
        "id": 1005, 
        "name": "Suspended"
    }, 
    {
        "keyName": "CANCEL_PENDING", 
        "id": 1021, 
        "name": "cancel_pending"
    }, 
    {
        "keyName": "VPN_ONLY", 
        "id": 1022, 
        "name": "VPN Only"
    }
]
```

## 自分への宿題
この記事へのアップデートもしくは新規で以下も書いてみたいです。

- VPNの接続許可サブネットをCLIで管理したい
- 新規作成まわりもせっかくだしまとめておきたい

## さいごに

### ID管理はだいじだよ
発注できたりするアカウントもあればデバイスの停止・起動ができたりと、
SoftLayerIDは重要なアカウントです。退職や異動があったときにはぜひ`SoftLayer ID`の棚卸し・権限の無効化、削除など適切に処理を行いましょう。

### 要望が出せるよ
SoftLayerIDをIBM Portal上でもカラムとして表示してほしい！
ということで、[要望を起票してみました。](https://ibmcloud.ideas.aha.io/ideas/IDEA-I-2981)

英語ではありますが、要望・アイデアをPublicに受け付けていて、賛同した要望・アイデアを投票できるようになっています。ぜひこんなこと困ったなーということがあればアイデアを寄稿してみてください。（投稿時メールアドレス必要ですが、公開は匿名です）

[IBM Cloud - Structured Ideas](http://ibm.biz/cloudideas)

### さんこうにしたところ
[https://github.com/softlayer/softlayer-python/issues/1008](https://github.com/softlayer/softlayer-python/issues/1008)

### ほんとうにさいごに
SUGOIKAISYA.co.jp なんてドメインはありません。
また執筆時点では存在しないことを確認しましたが、ドメインとしてそのドメインを万一登録されたとしても、本記事とは一切関係が有りませんのでご了承ください。