Suspend Billing 機能 (Beta) が有効な IBM Cloud 仮想サーバーを注文する方法


#目的
以下の発表内容について、ベータ版の新機能である「Suspend Billing」を利用するための仮想サーバーを注文する方法です。
書いてある通り、2018年7月現在では API 経由で注文する必要があるので、やり方を書いておきます。

>[IBM Cloud仮想サーバーの1分単位の課金と課金の一時停止機能を発表 | IBM ソリューション ブログ](https://www.ibm.com/blogs/solutions/jp-ja/virtual-servers-suspended-billing/)
>これはまだベータ版での提供のため、いくつかの重要な制限があります。まず、今回発表のVSIは、DAL、WDC、FRA、LONの各リージョン、SEO01、SAO01、TOK02のデータセンターでのみ利用可能です。
2つめの制限は、これらのインスタンスはAPI経由でのみ注文することができ、新しいパッケージを指定する必要があるということです。現時点では、課金の中断機能をサポートするVSIを注文書では注文することはできません。

詳細な公式ドキュメントは以下にあるものを参照しています。

>[About suspend billing (Beta) | IBM Cloud Docs](https://console.bluemix.net/docs/vsi/vsi_about_suspend.html?cm_mc_uid=64448603817315299862629&cm_mc_sid_50200000=75443461531193720489&cm_mc_sid_52640000=22919831531193720503)

# slcli の準備
今回は CLI で注文しますので、最新版のインストールもしくはアップグレードを事前に実施しておきます。
Mac の場合、以下のコマンドを実施しておきましょう。

```
sudo easy_install nose
sudo easy_install tornado
sudo pip install --upgrade pip
sudo pip install Softlayer
sudo pip install --upgrade Softlayer

```

```
$ slcli --version
slcli (SoftLayer Command-line), version 5.5.0
```

# 注文できるサーバーオプションの確認
以下のコマンドで確認します。

## 使用するパッケージ名の確認

```
$ slcli order package-list --keyword "hourly"
:................................:......................:.........................:
:              name              :       keyName        :           type          :
:................................:......................:.........................:
: Public Virtual Server (hourly) : SUSPEND_CLOUD_SERVER : VIRTUAL_SERVER_INSTANCE :
:................................:......................:.........................:
```

##注文可能なデータセンターの確認
```
$ slcli order package-locations SUSPEND_CLOUD_SERVER
:.........:.......:........................:...............:
:    id   :   dc  :      description       :    keyName    :
:.........:.......:........................:...............:
:    3    : dal01 :     DAL01 - Dallas     :     DALLAS    :
:  138124 : dal05 :     DAL05 - Dallas     :    DALLAS05   :
:  154820 : dal06 :     DAL06 - Dallas     :    DALLAS06   :
:  449494 : dal09 :     DAL09 - Dallas     :    DALLAS09   :
: 1441195 : dal10 :    DAL10 - Dallas      :    DALLAS10   :
: 1854795 : dal12 :    DAL12 - Dallas      :    DALLAS12   :
: 1854895 : dal13 :    DAL13 - Dallas      :    DALLAS13   :
:  449506 : fra02 :   FRA02 - Frankfurt    :   FRANKFURT   :
: 2434695 : fra04 :   FRA04 - Frankfurt    :  FRANKFURT04  :
: 2417495 : fra05 :   FRA05 - Frankfurt    :  FRANKFURT05  :
:  358694 : lon02 :     LON02 - London     :    LONDON02   :
: 2017395 : lon04 :    LON04 - London      :    LONDON04   :
: 2124095 : lon06 :    LON06 - London      :    LONDON06   :
:  983497 : sao01 :   SAO01 - Sao Paulo    :    SAOPAULO   :
: 1555995 : seo01 :     SEO01 - Seoul      :     SEOUL     :
:  449604 : tok02 :     TOK02 - Tokyo      :     TOKYO     :
:  37473  : wdc01 : WDC01 - Washington, DC : WASHINGTON_DC :
:  957095 : wdc04 : WDC04 - Washington, DC :   ASHBURN04   :
: 2017695 : wdc06 : WDC06 - Washington, DC :  WASHINGTON06 :
: 2017603 : wdc07 : WDC07 - Washington, DC :  WASHINGTON07 :
:.........:.......:........................:...............:
```

##注文可能なフレーバーの確認
```
$ slcli order preset-list SUSPEND_CLOUD_SERVER
:...............:...............:...............:
:      name     :    keyName    :  description  :
:...............:...............:...............:
:  B1.8x32x100  :  B1_8X32X100  :  B1.8x32x100  :
:  B1.16x32x100 :  B1_16X32X100 :  B1.16x32x100 :
:  B1.32x64x100 :  B1_32X64X100 :  B1.32x64x100 :
: B1.32x128x100 : B1_32X128X100 : B1.32x128x100 :
: B1.48x192x100 : B1_48X192X100 : B1.48x192x100 :
:   C1.8x8x100  :   C1_8X8X100  :   C1.8x8x100  :
:  M1.4x32x100  :  M1_4X32X100  :  M1.4x32x100  :
:   B1.1x4x100  :   B1_1X4X100  :   B1.1x4x100  :
:  B1.16x64x100 :  B1_16X64X100 :  B1.16x64x100 :
:   C1.1x1x100  :   C1_1X1X100  :   C1.1x1x100  :
:  C1.16x16x100 :  C1_16X16X100 :  C1.16x16x100 :
:  C1.32x32x100 :  C1_32X32X100 :  C1.32x32x100 :
:   M1.1x8x100  :   M1_1X8X100  :   M1.1x8x100  :
:  M1.2x16x100  :  M1_2X16X100  :  M1.2x16x100  :
:  M1.8x64x100  :  M1_8X64X100  :  M1.8x64x100  :
: M1.16x128x100 : M1_16X128X100 : M1.16x128x100 :
: M1.30x240x100 : M1_30X240X100 : M1.30x240x100 :
:   B1.2x8x100  :   B1_2X8X100  :   B1.2x8x100  :
:   B1.4x8x100  :   B1_4X8X100  :   B1.4x8x100  :
:   B1.1x2x25   :   B1_1X2X25   :   B1.1x2x25   :
:   B1.1x4x25   :   B1_1X4X25   :   B1.1x4x25   :
:   B1.2x4x25   :   B1_2X4X25   :   B1.2x4x25   :
:   B1.2x8x25   :   B1_2X8X25   :   B1.2x8x25   :
:   B1.4x8x25   :   B1_4X8X25   :   B1.4x8x25   :
:   B1.4x16x25  :   B1_4X16X25  :   B1.4x16x25  :
:   B1.8x16x25  :   B1_8X16X25  :   B1.8x16x25  :
:   B1.8x32x25  :   B1_8X32X25  :   B1.8x32x25  :
:  B1.16x32x25  :  B1_16X32X25  :  B1.16x32x25  :
:  B1.16x64x25  :  B1_16X64X25  :  B1.16x64x25  :
:  B1.32x64x25  :  B1_32X64X25  :  B1.32x64x25  :
:  B1.32x128x25 :  B1_32X128X25 :  B1.32x128x25 :
:  B1.48x192x25 :  B1_48X192X25 :  B1.48x192x25 :
:   C1.1x1x25   :   C1_1X1X25   :   C1.1x1x25   :
:   C1.2x2x25   :   C1_2X2X25   :   C1.2x2x25   :
:   C1.4x4x25   :   C1_4X4X25   :   C1.4x4x25   :
:   C1.8x8x25   :   C1_8X8X25   :   C1.8x8x25   :
:  C1.16x16x25  :  C1_16X16X25  :  C1.16x16x25  :
:  C1.32x32x25  :  C1_32X32X25  :  C1.32x32x25  :
:   M1.1x8x25   :   M1_1X8X25   :   M1.1x8x25   :
:   M1.2x16x25  :   M1_2X16X25  :   M1.2x16x25  :
:   M1.4x32x25  :   M1_4X32X25  :   M1.4x32x25  :
:   M1.8x64x25  :   M1_8X64X25  :   M1.8x64x25  :
:  M1.16x128x25 :  M1_16X128X25 :  M1.16x128x25 :
:  M1.30x240x25 :  M1_30X240X25 :  M1.30x240x25 :
:  B1.8x16x100  :  B1_8X16X100  :  B1.8x16x100  :
:   C1.2x2x100  :   C1_2X2X100  :   C1.2x2x100  :
:   C1.4x4x100  :   C1_4X4X100  :   C1.4x4x100  :
:   B1.1x2x100  :   B1_1X2X100  :   B1.1X2X100  :
:   B1.2x4x100  :   B1_2X4X100  :   B1.2x4x100  :
:  B1.4x16x100  :  B1_4X16X100  :  B1.4x16x100  :
:...............:...............:...............:
```

##注文可能なオプションカテゴリの確認
```
$ slcli order category-list SUSPEND_CLOUD_SERVER # --required で絞ることも可能
:........................................:.........................:............:
:                  name                  :       categoryCode      : isRequired :
:........................................:.........................:............:
:               Surcharges               :         premium         :     N      :
:        New Cloud Customer Setup        :    new_customer_setup   :     N      :
:           Computing Instance           :        guest_core       :     Y      :
:             EVault Plugin              :      evault_plugin      :     N      :
:                  RAM                   :           ram           :     Y      :
:           Remote Management            :    remote_management    :     Y      :
:           Uplink Port Speeds           :        port_speed       :     Y      :
:            Public Bandwidth            :        bandwidth        :     Y      :
:           PCIe Device - GPU            :    guest_pcie_device0   :     N      :
:          Primary IP Addresses          :     pri_ip_addresses    :     Y      :
:     Public Secondary IP Addresses      :     sec_ip_addresses    :     N      :
:         Primary IPv6 Addresses         :    pri_ipv6_addresses   :     N      :
:      Public Static IPv6 Addresses      :  static_ipv6_addresses  :     N      :
:            Managed Resource            :     managed_resource    :     N      :
:        Storage Backend Upgrade         : storage_backend_upgrade :     N      :
:               First Disk               :       guest_disk0       :     Y      :
:              Second Disk               :       guest_disk1       :     N      :
:               Third Disk               :       guest_disk2       :     N      :
:              Fourth Disk               :       guest_disk3       :     N      :
:               Fifth Disk               :       guest_disk4       :     N      :
:                 EVault                 :          evault         :     N      :
:            Operating System            :            os           :     Y      :
:           OS-Specific Addon            :         os_addon        :     N      :
:               CDP Addon                :        cdp_backup       :     N      :
:         Control Panel Software         :      control_panel      :     N      :
:           Database Software            :         database        :     N      :
:         Web Analytics Software         :      web_analytics      :     N      :
:    Anti-Virus & Spyware Protection     :  av_spyware_protection  :     N      :
:               Insurance                :       bc_insurance      :     N      :
:               Monitoring               :        monitoring       :     Y      :
:          Advanced Monitoring           :    monitoring_package   :     N      :
:              Notification              :       notification      :     Y      :
:                Response                :         response        :     Y      :
:    Intrusion Detection & Protection    :   intrusion_protection  :     N      :
:     Hardware & Software Firewalls      :         firewall        :     N      :
:    VPN Management - Private Network    :      vpn_management     :     Y      :
: Vulnerability Assessments & Management :  vulnerability_scanner  :     Y      :
:........................................:.........................:............:

```


###【参考】注文可能なオプションカテゴリの詳細の確認
```
slcli order item-list SUSPEND_CLOUD_SERVER --category guest_core
slcli order item-list SUSPEND_CLOUD_SERVER --category ram
slcli order item-list SUSPEND_CLOUD_SERVER --category remote_management
slcli order item-list SUSPEND_CLOUD_SERVER --category port_speed
slcli order item-list SUSPEND_CLOUD_SERVER --category bandwidth
slcli order item-list SUSPEND_CLOUD_SERVER --category pri_ip_addresses
slcli order item-list SUSPEND_CLOUD_SERVER --category guest_disk0
slcli order item-list SUSPEND_CLOUD_SERVER --category os
slcli order item-list SUSPEND_CLOUD_SERVER --category monitoring
slcli order item-list SUSPEND_CLOUD_SERVER --category notification
slcli order item-list SUSPEND_CLOUD_SERVER --category response
slcli order item-list SUSPEND_CLOUD_SERVER --category vpn_management
slcli order item-list SUSPEND_CLOUD_SERVER --category vulnerability_scanner
```

#サーバー注文

##注文実行コマンドの確認
上記オプションカテゴリの詳細を確認した上で、設定を入れて実行確認ができます。
以下は、1 core, 1 GB RAM の CentOS 6.x サーバーを private only で注文するケースです。

```
$ slcli order place --verify SUSPEND_CLOUD_SERVER TOKYO \
--complex-type SoftLayer_Container_Product_Order_Virtual_Guest \
--preset C1_1X1X25 \
REBOOT_REMOTE_CONSOLE \
100_MBPS_PRIVATE_NETWORK_UPLINK \
BANDWIDTH_0_GB_2 \
1_IP_ADDRESS \
OS_CENTOS_6_X_MINIMAL_64_BIT_2 \
MONITORING_HOST_PING \
NOTIFICATION_EMAIL_AND_TICKET \
AUTOMATED_NOTIFICATION \
UNLIMITED_SSL_VPN_USERS_1_PPTP_VPN_USER_PER_ACCOUNT \
NESSUS_VULNERABILITY_ASSESSMENT_REPORTING \
--extras '{"virtualGuests": [{"hostname": "khayama-suspend", "domain": "ibmcloud.com"}]}'

:.....................................................:.......................................................:......:
:                       keyName                       :                      description                      : cost :
:.....................................................:.......................................................:......:
:                REBOOT_REMOTE_CONSOLE                :                Reboot / Remote Console                :  0   :
:           100_MBPS_PRIVATE_NETWORK_UPLINK           :            100 Mbps Private Network Uplink            :  0   :
:                   BANDWIDTH_0_GB_2                  :                     0 GB Bandwidth                    :  0   :
:                     1_IP_ADDRESS                    :                      1 IP Address                     :  0   :
:            OS_CENTOS_6_X_MINIMAL_64_BIT_2           :         CentOS 6.x - Minimal Install (64 bit)         :  0   :
:                 MONITORING_HOST_PING                :                       Host Ping                       :  0   :
:            NOTIFICATION_EMAIL_AND_TICKET            :                    Email and Ticket                   :  0   :
:                AUTOMATED_NOTIFICATION               :                 Automated Notification                :  0   :
: UNLIMITED_SSL_VPN_USERS_1_PPTP_VPN_USER_PER_ACCOUNT : Unlimited SSL VPN Users & 1 PPTP VPN User per account :  0   :
:      NESSUS_VULNERABILITY_ASSESSMENT_REPORTING      :      Nessus Vulnerability Assessment & Reporting      :  0   :
:                       RAM_1_GB                      :                          1 GB                         :  0   :
:                     GUEST_CORE_1                    :               1 x 2.0 GHz or higher Core              :  0   :
:                 GUEST_DISK_25_GB_SAN                :                      25 GB (SAN)                      :  0   :
:.....................................................:.......................................................:......:
```

##注文の実行
```
slcli order place SUSPEND_CLOUD_SERVER TOKYO \
--complex-type SoftLayer_Container_Product_Order_Virtual_Guest \
--preset C1_1X1X25 \
REBOOT_REMOTE_CONSOLE \
100_MBPS_PRIVATE_NETWORK_UPLINK \
BANDWIDTH_0_GB_2 \
1_IP_ADDRESS \
OS_CENTOS_6_X_MINIMAL_64_BIT_2 \
MONITORING_HOST_PING \
NOTIFICATION_EMAIL_AND_TICKET \
AUTOMATED_NOTIFICATION \
UNLIMITED_SSL_VPN_USERS_1_PPTP_VPN_USER_PER_ACCOUNT \
NESSUS_VULNERABILITY_ASSESSMENT_REPORTING \
--extras '{"virtualGuests": [{"hostname": "khayama-suspend", "domain": "ibmcloud.com"}]}'

This action will incur charges on your account. Continue? [y/N]: y
:.........:...........................:
:    name : value                     :
:.........:...........................:
:      id : 26841203                  :
: created : 2018-06-29T12:31:23+09:00 :
:  status : PENDING_AUTO_APPROVAL     :
:.........:...........................:
```

#さいごに
2018年7月現在、あくまでベータ版の機能となります。

請求サイクルの終わりに、使用した時間単位か、または、その期間中にインスタンスが（プロビジョンから請求タイミングまで）稼働した時間の25％のいずれか大きい金額の料金が課金されるので、うまく使えばコストを下げられる場合がありますね。

数か月後には GUI からオーダーできるようになり、世界中のすべてのIBM Cloudデータセンターで利用可能とする計画のようです。