TerraFormCloud  GithHub連携メモ

# 概要

:::note info
* GitHubActionsからCIをTerraformCloudに移行
* 連携でエラーが出たので手順を含めてメモ
* ひとまずterrrafoorm plan/apply/destroyをやるところまで
:::

# 詳細


* WorkSpace作成でGitHubを選んだら以下のエラー

```
Failed to install GitHub App
```

## Github 設定

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/3e77175e-079d-1cd9-58dd-0d526d15a505.png" width=80%>

* "**GitHuB.com(Custom)**"を指定が正しい

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/bee82e15-46d3-2247-c3a2-a44d0874893b.png" width=80%>

* GitHubの右上アイコン➔"**Settings**"➔"**Developer settings**"➔"**OAuth Apps**"➔"**Register a new application**"を選ぶ

* 表示された**Client ID**と**Client Secret**をTerraform Cloud使うのでメモ

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/6477674b-bcb1-9573-c0d2-6fbdde382cdd.png" width=80%>

* "**Client Secret**"を生成

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/141fe08b-261a-86f8-d3d7-c0d2d315544c.png" width=80%>


* **ClientID**と**ClientSecret**をメモ

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/806108c0-d17d-9d06-4368-7671cff7d87a.png" width=50%>

## TerraformCloud 設定

* メモした**ClientID**と**ClientSecret**を入力

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/5b81beec-5ba4-e6d3-72f8-7bcfdab26f6d.png" width=50%>

* GitHUbで"Organization aceess"をする場合はRequestして管理者に承認してもらう
* Authorizeする

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/72d926e2-6201-dcbc-e59b-b462b2f6cd9c.png" width=80%>


* SSHキーセットアップはスキップ。あとでもいい。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/37c400d7-a15a-837a-3048-b41cc8d04487.png" width=80%>

* 連携が完了

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/396005a2-fe04-aa30-361c-75d7577b3dc1.png" width=80%>

* GitHub側をリロード。ユーザが増えている。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/415325d1-fdef-d23a-1777-743173fc15f2.png" width=80%>

* WorkSpace作成の続き。GitHubが選択できるようになっている。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/5dc674c9-2794-edbb-f7ad-c8bfd6f0fc8f.png" width=50%>

* 会社で使っている場合などは"**OrganizationAccess**"をする

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/cbceab2e-b9c4-d791-346b-e54598ad706d.png" width=50%>


* 次の画面ではGitHub上にあるリポジトリが選べるようになっている

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/b17cd10e-36e1-dd5d-c4f5-dc4d543fd15b.png" width=80%>

* "**NextStep**"に従って変数を入れる

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/b23a43b1-6d00-32c1-478a-32fd242d5b59.png" width=80%>

* **AWSのクレデンシャル**を入力

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/a84cd8e8-01ac-4690-7129-92ccbe380b56.png" width=80%>

## TerraformCloud　apply実行

* 詳細は割愛するが適当なリポジトリ・tfファイルを右上メニューからPLAN実行してみる
* CIでエラーが出たらメッセージを参考に都度修正
* 変数まわりでエラーが出たが、とりあえずハードコードなどして正常にCIをパスするようにする。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/7a30c446-e727-7958-f914-5ceee60c8d74.png" width=80%>

* PLANが通ったらAPPLYで適用してみる

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/9711b7f3-1309-8053-6cae-f48f510c88ae.png" width=50%>

* stateのタブを選択。tfstateの状態を確認できる。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/bf2cca57-039e-510f-dde0-04c035251543.png" width=60%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/76f50105-6b46-4508-011c-5d105a12d5cc.png" width=80%>

## TerraformCloud　destroy実行

* terraform destroy を実行して環境を削除する。対象WorkspaceのSettingから以下のように「Destruction and Deletion」を選択

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/3bce5832-342d-4eab-b0d9-8e3f24e75afe.png" width=80%>

* "Allow destroy plans"を有効にする
* "Queue destroy plan"で"terraform destory"を実行する

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/ad061c7b-49b3-569d-def3-a79d3abab02a.png" width=80%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/c564d8b8-7466-49de-00dd-5d41cc9f0087.png" width=80%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/7b560239-7852-fd73-0118-a4725cb0775e.png" width=80%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/09feb767-67db-97d4-029e-098001931fd2.png" width=80%>

* 削除後は空のtfstateが残る

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/89f90e49-ca23-e942-58a0-87834ca68454.png" width=60%>

# その他エラー

* 特定のリポジトリを選択できない
* WebHookの設定に問題があるようなメッセージ

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57350/7ddcb699-0764-da7f-6624-bfd30def43e8.png" width=80%>

```
Error creating workspace
Failed to create webhook on repository: Failed to create webhook on repository
```

* リポジトリ側に権限がない可能性。リポジトリの設定を変更する必要があり。