IBM CloudでCloud Foundryアプリケーションをデプロイをする


こんにちは。Cloud IaaS超初心者です。
先日IBM Cloud のCloud Foundryを使用してアプリケーションをデプロイしようとした時に少し詰まったので備忘録として残しておきます。


まずはコンソール上でCloud Foundryアプリケーションを作る。
1. 「カタログ」->「Cloud Foundry」を検索
2. 「パブリックアプリケーション」を選択
3. リージョン「シドニー」（東京はない）、ランタイム「SDK for Node.js」、あとはドメイン名やホスト名などよしなに。

作成すると、コンソール上から「Cloud Foundryアプリケーション」として確認できる。

次にCLIからあらかじめ作成したプロジェクトをデプロイしてみる。
ログインとCLIコマンドインストール

```
ibmcloud login
ibmcloud cf install
```


targetを対話的に設定、、と思ったらここで問題発生。


```
~/Desktop/cloudfoundry/test $ ibmcloud target --cf
失敗
Cloud Foundry インスタンスを取得できませんでした:
Cloud Foundry パブリック・インスタンスと Cloud Foundry Enterprise Environment のどちらも見つかりませんでした。

```

なんでやねん。と思いながらいろいろ調べてみると、ログイン後に出てくるこいつに不信感を抱く。

```
~/Desktop/cloudfoundry/test $ ibmcloud login
API エンドポイント: https://cloud.ibm.com
認証中です...
OK

アカウントを選択:
1. ・・・
数値を入力してください> 1
ターゲットのアカウント ・・・'s Account (・・・)


地域を選択します (または Enter キーを押してスキップします):
1. au-syd
2. in-che
3. jp-osa
4. jp-tok
5. kr-seo
6. eu-de
7. eu-gb
8. us-south
9. us-south-test
10. us-east
数値を入力してください> 4
ターゲットの地域 jp-tok

                            
API エンドポイント:      https://cloud.ibm.com   
地域:                    jp-tok   
ユーザー:                XXX   
アカウント:              XXX   
リソース・グループ:      リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用してください   
CF API エンドポイント:      
組織:                       
スペース:                   
```

とりあえずCF　APIエンドポイントというのが空なのはよくなさそうなので設定してみる。今回はcloud foundryアプリ作成時に設定したリージョンであるシドニーをエンドポイントとする。

```
~/Desktop/cloudfoundry/test $ ibmcloud target --cf-api https://api.au-syd.cf.cloud.ibm.com
失敗
Cloud Foundry インスタンスを取得できませんでした:
Cloud Foundry インスタンス (API エンドポイント: https://api.au-syd.cf.cloud.ibm.com) は、地域 'jp-tok' 内のパブリック・インスタンスとしても、Cloud Foundry Enterprise Environment としても、見つかりませんでした。
```


な・ん・で、、、、、？と思ったがよく読んでみたら察し。**「地域 'jp-tok' 内の」**？！

自分のユーザ情報もう一度確認。

```
~/Desktop/cloudfoundry/test $ ibmcloud target 
API エンドポイント:      https://cloud.ibm.com   
地域:                    jp-tok   
ユーザー:                XXX  
アカウント:              XXX   
リソース・グループ:      リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用してください   
CF API エンドポイント:      
組織:                       
スペース:      
```

わたし「地域、jp-tokになっとるやないかい」
つい反射的に東京を選択していました。うっかりうっかり。
てことで気を取り直して

```
~/Desktop/cloudfoundry/test $ ibmcloud target -r au-syd
地域 au-syd
 に切り替えました

                            
API エンドポイント:      https://cloud.ibm.com   
地域:                    au-syd   
ユーザー:                XXX  
アカウント:              XXX   
リソース・グループ:      リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用してください   
CF API エンドポイント:      
組織:                       
スペース:  

~/Desktop/cloudfoundry/test $ ibmcloud target --cf-api https://api.au-syd.cf.cloud.ibm.com
ターゲットの Cloud Foundry (https://api.au-syd.cf.cloud.ibm.com)


                            
API エンドポイント:      https://cloud.ibm.com   
地域:                    au-syd   
ユーザー:                XXX   
アカウント:              XXX   
リソース・グループ:      リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用してください   
CF API エンドポイント:   https://api.au-syd.cf.cloud.ibm.com (API バージョン: 2.147.0)   
組織:                       
スペース:                   
```

キターーー
リージョンを適切にしたことでCF APIエンドポイントの登録ができ、無事にtargetコマンドも動きました。
あとはpushをするだけでデプロイができます。便利〜。
めでたしめでたし。