PCにICP 3.1.2 をたった3行でインストールする

と大々的に謳ってみました。実体は、

**IBM が提供する GitHub リポジトリの、IBM Cloud Private (以下、ICP) の community edition 版を、VirtualBox、Vagrantを使用してインストールする**

ことを指します。

## 3行とは
次の3行のことです。

```
git clone https://github.com/IBM/deploy-ibm-cloud-private.git
cd deploy-ibm-cloud-private
vagrant up
```

``vagrant up``を実行すると、ライセンス確認を受けますので回答ください。

```
################################################################################
# You must accept the terms of the Software License under which we are         #
# providing the IBM Cloud Private community edition software.                  #
#                                                                              #
# See license terms here: https://hub.docker.com/r/ibmcom/icp-inception/       #
################################################################################
Do You Accept the Terms of the Software License? [Y|n]
```

インストール完了時は、コンソールに以下が出力します。

```
icp: ###############################################################################
icp: #          IBM Cloud Private community edition installation complete!         #
icp: #                  The web console is now available at:                       #
icp: #                                                                             #
icp: #                          https://192.168.27.100:8443                        #
icp: #                        username/password is admin/***                       #
icp: #                                                                             #
icp: #                          Documentation available at:                        #
icp: #               https://www.ibm.com/support/knowledgecenter/SSBS6K            #
icp: #                                                                             #
icp: #                 Request access to the ICP-ce Public Slack!:                 #
icp: #                            http://ibm.biz/BdsHmN                            #
icp: ###############################################################################
```

https://192.168.27.100:8443 でログイン画面が表示されます。
パスワードは Vagrantfile 内に記載あります。
<img width="1601" alt="スクリーンショット 2019-04-18 18.19.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232123/a1f54107-d2cd-17f3-41c7-a300a64a86d6.png">



以降の内容は、[GitHub リポジトリ](https://github.com/IBM/deploy-ibm-cloud-private/blob/master/docs/deploy-vagrant.md) を一部参照しており、2019/04/18時点のものです。


## 前提

### PC
| Key | Value |
|:-:|:-:|
| OS | Mac OSx 10.13.6 |
|   | Windows 10 |
|   | Windows 7 |
|   | Ubuntu 16.04 & 16.10 |
| ディスク領域 | 100GB |

### ソフトウェア

- VirtualBox
- Vagrant
- Git CLI

### Vagrantfile
Vagrantfile に記載する値を変更することでインストール可能ですが、動作保証はされていません。

| Key | デフォルト値 |
|:-:|:-:|
| コア(CPU) | 6 |
| RAM(Memory) | 8GiB |
| ディスク | 100GB |

## 動作環境
Vagrantfileの書き換えは行っていませんが、4コアでも稼働できました。
ただし、導入完了に1時間かかりました。

```
$ system_profiler SPHardwareDataType
Model Name: MacBook Pro
Model Identifier: MacBookPro14,3
Processor Name: Intel Core i7
Processor Speed: 2.9 GHz
Number of Processors: 1
Total Number of Cores: 4
Memory: 16 GB

$ VBoxManage -v
5.2.22r126460

$ vagrant -v
Vagrant 2.2.2

$ git --version
git version 2.20.1 (Apple Git-117)
```
## kubectlを使用する
画面右上の顔マークを押し、``クライアントの構成``を開きます。
<img width="461" alt="スクリーンショット 2019-04-18 18.29.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232123/cc91af3c-0202-f06a-df5d-981d0265d89d.png">
<img width="841" alt="スクリーンショット 2019-04-18 18.32.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232123/849689a4-3c1c-30db-5319-508f7463ca5b.png">


CLI を構成するには、表示される構成コマンドを端末ウィンドウに貼り付けて実行します。

```
kubectl config set-cluster mycluster --server=https://192.168.27.100:8001 --insecure-skip-tls-verify=true
kubectl config set-context mycluster-context --cluster=mycluster
kubectl config set-credentials admin --token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdF9oYXNoIjoiOGYwMzE2Y2JiZTNjZmE0Y2NiZDYyODRmYjNhYThmMWM5ZWUwZWJlMSIsInJlYWxtTmFtZSI6ImN1c3RvbVJlYWxtIiwidW5pcXVlU2VjdXJpdHlOYW1lIjoiYWRtaW4iLCJpc3MiOiJodHRwczovL215Y2x1c3Rlci5pY3A6OTQ0My9vaWRjL2VuZHBvaW50L09QIiwiYXVkIjoiYzZkOTc1N2ZhZjQ2YjI0MGQ1MmM0OTIyODRjNDFiZjkiLCJleHAiOjE1NTU2MDg2MDksImlhdCI6MTU1NTU3OTgwOSwic3ViIjoiYWRtaW4iLCJ0ZWFtUm9sZU1hcHBpbmdzIjpbXX0.ocRLRDAZmKTKuf--F71NpiNbg1HUh_byCGbD9987NgF_b8rHp_ZDeQMKIGSSqz7ztZyYFUQL1LWw5GH7Yeq2KKgmbdE_jLjVvHP6QblFDA4EQ8a6WB36M_-LbNaeY8LvRjJfugE2neE7ZfzdSTa4qVmAIyI7XHC8bBXaE5W3Julw5OMflbApWU0WfabXUSfV8ksRiNWjAVJCqSd9QKKbEW2U6mFgsPncwUvoOoMfdZYbUSYwxyjhOREaxV-zjDHWmBBpbRMX1e7BEcFI9FwarcT_ak2nmIqaENgZUMzrw_byfxHEd__nbU5Vyoz7tzJLbiNTxGgHCdf1NHsTydfITQ
kubectl config set-context mycluster-context --user=admin --namespace=cert-manager
kubectl config use-context mycluster-context
```
以上で、クラスタに対してkubectlを使用することができるようになりました。

```
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:38:32Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.4+icp", GitCommit:"3f5277fa129f05fea532de48284b8b01e3d1ab4e", GitTreeState:"clean", BuildDate:"2019-01-17T13:41:02Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}

$ kubectl get no
NAME             STATUS    ROLES                          AGE       VERSION
192.168.27.100   Ready     etcd,management,master,proxy   1h        v1.12.4+icp
192.168.27.101   Ready     worker                         1h        v1.12.4+icp
192.168.27.102   Ready     worker                         1h        v1.12.4+icp
```