IBM Cloud Automation Manager(CAM)を触ってみよう！

#1. IBM Cloud Automation Manager(CAM)とは
2017年3月20日～23日に開催されたIBM最大のイベントであるInterconnect 2017では様々なソリューションが発表されました。そのうちの目玉の１つがIBM Cloud Automation Manager(CAM)です。

AWSやAzureやGCPといった複数のクラウドを比較検討し、場合によってはその向き・不向きによって使い分けて利用しているユーザーは増えてきています。マルチクラウドが今や当たり前になってきている時代で、多種多様なクラウド環境に対してどうやってデプロイし管理していくのかというのは一つの課題なのかもしれません。

この解決策の１つとして現在脚光を浴びているのはHashiCorp社が提供しているTerraformというInfrastructure as a codeのオープンソースのオーケストレーションツールです。HashiCorp社は創業社であるMitchell Hashimoto氏が開発したVagrantから始まり、Packer, Serf, Consul, など数々の運用面で有用なツールを数多く公開していることで有名な会社ですね。
Terraformでは、あらかじめインフラ構成をテンプレートファイルに記述しておくことで、クラウド環境にサービスをデプロイ・管理することが可能になります。**Terraformの特徴は、なんといってもサポートするサービスプロバイダーの種類の多さ**。本原稿の執筆時点（2017/03/29)において、IaaS（AWS、GCP、Microsoft Azure、OpenStackなど）、PaaS（Herokuなど）、SaaSサービス（Atlas、DNSimple、Cloudflareなど）、Containerサービス（Kubernetesなど）を含めて、なんと**62種類**も存在します。

IBM Cloud Automation Manager(CAM)は、オープンソースのTerraformを利用して統一コンソールから複数のクラウドプラットフォーム上にサービスをデプロイし、一元管理することを可能にするツールです。現在は、IBM Bluemix上に**無料**で提供開始しており、すでに複数のブループリントと呼ばれる事前構成済みのテンプレートを使ってIBM BluemixやAWSやvSphere（beta)上に数クリックでサーバーを配布することが可能です。

本日時点ではまだまだCAMは機能不足であることは否めませんし、先述のとおり現時点ではIBM Bluemixでのみの提供ですが、今後オンプレ版なども提供され、2017年中に随時機能拡張されていく予定です。マーケットプレイスから事前構成済みの自動化パックが提供され容易にサービスが利用可能になることの他、監視・管理機能の充実、VMWare on IBM Cloudは昨年から継続してIBMが推しているソリューション、Service BrokerであるGravitant、Watson、DevOpsサービスであるUrban Code Deployなどとの連携が強化されていくと予想されます。

参考：
https://www.ibm.com/blogs/bluemix/2017/03/introducing-cloud-automation-manager/
https://www.terraform.io/docs/providers/softlayer/r/virtual_guest.html



#2. CAMを使ってKubernetesをデプロイしてみよう！
先述のとおり、CAMはIBM Bluemixから無償で利用可能です。今回はCAMからIBM Bluemix上にサービスを展開したいと思います（プロビジョニングツールであるCAMは無償ですが、デプロイ先のサーバーには課金が発生するのでご注意下さい）

1. IBM Bluemix console(https://console.ng.bluemix.net/catalog/services/cloud-automation-manager/ )より、CAMを選択する。<br>![CAM001.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/8e014cc1-37e1-9c51-f36c-695e0a7dca75.jpeg)
2. サービス名を適当に選択して「作成」ボタンを選択。今回はデフォルトのままで作成。<br>![CAM002.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/38371af4-4d1e-0774-6041-ed88b3eb67cd.jpeg)
3. 「Let's get started」を選択。<br>![CAM003.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/b71ced18-42da-e551-5b97-35bd7aa6e3a1.jpeg)
4. CAMの紹介ページ（必要に応じて参考にして下さい） 。接続情報を作成するため、左側のナビゲーションから「Cloud Connections」を選択。<br>![CAM004.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/6c2d5c70-9ef0-bd8a-21f1-c3e769bc6698.jpeg)
5. 「Create Connections」を作成<br>![CAM005.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/948b5055-c6f5-5e93-1e9f-1d7337035d35.jpeg)
6. 接続情報を指定。今回は、IBM Cloud(IBM Bluemix/SoftLayer)を選択。SoftLayer usrename/API keyは、Bluemix Infrastructure(SoftLayer)から該当ユーザーの情報を指定する。<br>![CAM006.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/9edc6bdc-20fa-c73a-11c6-cc000f5403e5.jpeg)
7. 接続情報ができたことを確認し、「Template Library」に移動。<br>![CAM007.png](https://qiita-image-store.s3.amazonaws.com/0/62127/4d24d8aa-a2f2-b342-fdbf-33aa6944a39b.png)
8. たくさんテンプレートがある！今回は一番左上の「Kubernetes Cluster with Nginx Deployment」を選択<br>![CAM008.png](https://qiita-image-store.s3.amazonaws.com/0/62127/2d48ebfc-777e-2bda-b6bb-b61826fdc799.png)
9. Overviewの確認。一応サーバーのスペックなども書かれてある。より詳細を知りたいので、「Template Source」に移動。<br>![CAM009.png](https://qiita-image-store.s3.amazonaws.com/0/62127/772bb795-853e-79d9-55c1-d212656e2b04.png)
10. ソースからBluemix Infrastructure(SoftLayer)上に作成されるサーバーのドメイン名がcam.ibm.comになることなども分かります。内容を確認したのでDeployボタンを押下。<br>![CAM010.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/f3c97156-5a90-2a53-b411-5505c0f844be.jpeg)
11. インスタンス名（これはCAM内で管理される名前）やクラスター名（これは実際にBluemix上のサーバーに付けられる名前）やノード数、データセンター、SSH鍵（これは本当にベタで貼りつけ！）を入力しDeploy。<br>![CAM011.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/c4ff1962-0ba8-175b-8fed-94abd122ad89.jpeg)
12. プロビジョニングが開始される。<br>![CAM012.png](https://qiita-image-store.s3.amazonaws.com/0/62127/42a7739e-3fc2-93b3-72f0-18fda59068bd.png)



プロビジョニングが完了すると以下のようになります。

- コンソール。ここからキャンセルも可能です。<br> ![CAM015.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/304f8a21-454c-994a-21f1-fa13337a8382.jpeg)
- コンソールログ<br>![CAM013.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/89e60fef-db10-8f20-b11f-7bc04e4fc556.jpeg)
- Bluemix Infrastructureでの状態<br>![CAM014.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/8f388a78-283d-d031-a649-eabd52dff4cb.jpeg)


#3. 注意事項
ここまでボタンをポチポチクリックしていくだけで環境が作れることが実感できたと思います。とても便利！っていうことは説明しなくても分かりますが、触っていて気がついた箇所も一応挙げて起きます。

- いくら課金されるかが事前に分からない（実際にプロビジョニングしてからBluemix Infrastrcutureからプロビジョニングされたサーバーの課金状況を調査する必要がある）。
- 作られた仮想サーバーはインターネットに公開された状態になっている（private onlyとかではない。）Firewallも設定されていない。-> **プロビジョニング後は必ずセキュリティー対策をして下さい。**
- サーバーのネットワークスピードが10Mbpsのままになっている（100Mbpsでも価格は同じなんだから100Mbpsをデフォルトにして欲しい）。
- サーバーが時間課金の仮想専有になっている（時間課金の仮想共有の方が安いのでこちらの方がありがたい）。
- 途中でKubernetesのエラーが発生して構成がエラーになっていた・・・
- 紹介資料にはリソース使用率のグラフとかが提供されるようなイメージキャプチャーが張られていたけど、、、そんな画面は存在しない（削除されてしまった？）・・・

まだ初期段階だということもありますが、あくまでサンプルテンプレートであり、本格的に利用するのであればは自分でTemplateをカスタマイズして作っていくべき所なのかもしれません。利用者が増えるとどんどん改善されていくところだと期待しています。