CD3 Automation ToolkitでOCIリソースをExcelから爆速構築！その3 リソース更新削除編

# 前回のおさらい
"CD3 Automation Toolkit"でOCIリソースをExcelから爆速構築！シリーズです。
その１概要説明とリソース作成編は[こちら](https://qiita.com/harukb/items/bb9901da8b3bdbfd1a58) 
その２リソース出力編は[こちら](https://qiita.com/harukb/items/fbc02a02c8fb39db7ec1) 

# 導入

## 検証内容

前回までの再掲です。
> 　- 既存リソースの取り込み必要のない前述のユースケースパターン "Greenfield workflow"環境にて、Excelファイルから正常にリソースが作成と削除、更新がされるか検証する
> 
> - 作成対象リソースは次の通り
>     - Phoenixリージョン（Home）
>         - VCN
>         - Subnet
>         - Route Table
>         - Security List
>         - Compute　☆
>         - Object Storage - Bucket　★
>     
>     - Tokyoリージョン（Remote）
>         - Object Storage - Bucket ★
    
# 検証シナリオ
前記事（[その１](https://qiita.com/harukb/items/bb9901da8b3bdbfd1a58)）で実行済
> - Excelを記入してアップロードし、当ツールで"create resources"を実行
> - 生成されたTerraformコードを利用して構築（Apply）実行する  
------------------------------------------------------
前記事（[その２](https://qiita.com/harukb/items/fbc02a02c8fb39db7ec1)）で実行済
> -  構築したリソースをExcelファイルに出力して想定どおりか確認する
------------------------------------------------------
当記事はこちら
-  Excelファイルより、リソース更新（☆のセル値更新）とリソース削除（★の削除）操作ののちファイル更新
-  再アップロードして再度"create resources"の実行
- 生成されたTerraformコードを利用して構築（Apply）実行する

基本的な流れはその1と同じです！


# 操作手順（ざっくり）
## 作業前のリソース状態
### Compute 
Testで始まるインスタンスが2個、そのうちのTest InstanceのMemoryが16GB、Boot volume sizeが50GBです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/8ab2d5b7-c93c-fa00-e954-473589c71f9d.png)

### Bucket
PhoenixとTokyoに1個づつのBucketがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/ae1fa282-4b92-f414-1e61-cd9f2643b279.png)

## 更新(Excel)
### Compute
Test InstanceのMemoryを16GB→8GB、Boot volume sizeを50GB→60GBに更新します。（画像は更新後）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/62c74a48-3315-95e3-ca60-923c222a8c56.png)

### Bucket
2つのBucketを削除します。空になりました。（画像は更新後）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/ca921876-a795-a435-1c20-7e1b446af974.png)

## OCI CloudShellへのアップロード
ローカルのExcelファイルをOCI CloudShellのHomeにドラッグしてアップロードします。
（ここではCD3-Blank-template_terraform_test_1_2.xlsxとしています）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/9c43a5b1-2e32-08ce-d257-f410bd5f8c5b.png)

### Computeへの転送

#### 実行例
```
xxx@cloudshell:~ (us-phoenix-1)$ scp -i .ssh/cd3/(ssh-key-xxx.key) ~/CD3-Blank-template_terraform_test_1_2.xlsx cd3user@10.2.0.54:/cd3user/mount_path/(tenancy name)
FIPS mode initialized
CD3-Blank-template_terraform_test_1_2.xlsx      
```  

※  CD3コンテナのtenanciesフォルダは、Computeの/cd3user/mount_pathフォルダにマップされます（[ドキュメント](https://docs.oracle.com/ja/learn/oci-cd3-greenfield/index.html#task-31-prepare-excel-and-variables-file)）

### コンテナの起動と接続
#### コンテナ接続
```
#Computeに接続
ssh -i .ssh/cd3/(ssh-key-xxx.key) cd3user@10.2.0.54
#コンテナIDの確認(xxxxxxxx部)と開始
sudo podman ps -a
sudo podman start xxxxxxxx

# ログイン
sudo podman exec -it cd3_toolkit bash
```
### 設定ファイル名の更新（変更がある場合のみ）
```
vi /cd3user/tenancies/(tenancy name)/(tenancy name)_setUpOCI.properties
```
ファイル名を更新します。またworkflow_type=create_resourcesとします。
```
 #path to cd3 excel eg /cd3user/tenancies/<customer_name>/CD3-Customer.xlsx
 cd3file=/cd3user/tenancies/(tenancy name)/CD3-Blank-template_terraform_test_1_2.xlsx
  
 #specify create_resources to create new resources in OCI(greenfield workflow)
 #specify export_resources to export resources from OCI(non-greenfield workflow)
 workflow_type=create_resources
 ```

### CD3の実行
今回はCompute、Bucketの単位で順にファイル出力とTerraform Plan/Applyを実行していきます。

### Computeリソースの更新
Computeを更新します。

#### ツールの起動
```
cd /cd3user/oci_tools/cd3_automation_toolkit/
python setUpOCI.py /cd3user/tenancies/(tenancy name)/(tenancy name)_setUpOCI.properties
 ```

#### 入力値のバリデーション
- Validationメニューは"8.  Validate Instances"を選択
```
Summary:
=======
There are no errors in CD3. Please proceed with TF Generation
```

#### CD3でのコード生成
- コード生成のメニューは"7.  Compute" > "2. Add/Modify/Delete Instances/Boot Backup Policy"を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/2a899586-d21f-0569-d5fb-4c2d43d97e76.png)

- 正常に処理が完了すると、*.auto.tfvarsが後述のcomputeディレクトリに出力（更新）されます。
#### TerraformによるComputeリソース作成 ####
- Computeリソースディレクトリは以下のパス
```
cd /cd3user/tenancies/(Tenancy name)/terraform_files/(Region name)/compute
```
computeリソース向けのディレクトリに*.auto.tfvarsが作成されていることを確認します。

##### TerraformによるComputeリソース更新 #####
```
terraform plan
```
plan後の計画を確認します。
想定出力（新規作成0件、変更1件、削除0件）
```
Plan: 0 to add, 1 to change, 0 to destroy.
```
1件の内容が意図通りか、Excel入力時のミスやTerraformによる想定外の解釈はないかを確認を行います。
問題なければリソースを更新します

```
terraform apply
```
途中で"yes"を挟みつつ、正常にリソースが作成されると以下のようにメッセージが表示されます。
```
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
```
##### リソース更新の確認（目視） #####
目視で確認。リソースは想定通り更新されているようですね。
> Test InstanceのMemoryを16GB→8GB、Boot volume sizeを50GB→60GB

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/2588c610-6682-6e3e-b082-c8a581f59df8.png)

### Object Storageリソースの削除
Bucketを2個削除します。

#### 入力値のバリデーション
- Validationメニューは"11. Validate Buckets"を選択
#### CD3でのコード生成
- コード生成のメニューは"8.  Storage" > "3. Add/Modify/Delete Object Storage Buckets"を選択
- 正常に処理が完了すると、*.auto.tfvarsが後述のossディレクトリに出力（更新）されます。


#### TerraformによるObjectリソース削除 ####
- Objectリソースディレクトリは以下のパス
※ 今回Bucketはus-phoenix-1とap-tokyo-1に作成しているので、それぞれのリージョンのossディレクトリごとにTerraformコマンドを実行します。

```
cd /cd3user/tenancies/(Tenancy name)/terraform_files/(Region name)/oss
```

まずはHomeリージョンのPhoenix(Region nameはphoenix)で実施

```
terraform plan
```
plan後の計画を確認します。（内部的にはBucketとLifeCyclePolicyの削除になるので1Bucketあたり2件です）
想定出力（新規作成0件、変更0件、削除2件）
```
Plan: 0 to add, 0 to change, 2 to destroy.
```
2件の内容が意図通りか、Excel入力時のミスやTerraformによる想定外の解釈はないかを確認を行います。
問題なければリソースを更新します

```
terraform apply
```
途中で"yes"を挟みつつ、正常にリソースが作成されると以下のようにメッセージが表示されます。
```
Apply complete! Resources: 0 added, 0 changed, 2 destroyed.
```

つぎにRemoteリージョンであるTokyo(Region nameはtokyo)で実施
```
terraform plan
```
plan後の計画を確認します。
想定出力（新規作成0件、変更0件、削除2件）
```
Plan: 0 to add, 0 to change, 2 to destroy.
```
こちらも問題ないのでApplyします
```
terraform apply
```
こちらも問題なくapply完了
```
Apply complete! Resources: 0 added, 0 changed, 2 destroyed.
```

##### リソース削除の確認（目視） #####
目視で確認。リソースは想定通り両リージョンともに削除されているようですね。
> 2つのBucketを削除します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/bf00f4ed-9e88-d32a-a826-b80a1660509a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/d5728eda-9dd4-6edd-edc6-113050bcd3f0.png)

# まとめ（その３） #
更新したExcelファイルからCD3を通してリソースの更新、削除が完了しました。またbucketに関してはhomeとremoteリージョンそれぞれに対して削除が及んでいることも確認できましたね。

# 参考情報
[CD3サイト](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/cd3-overview/)
[Help Center](https://docs.oracle.com/ja/learn/oci-cd3-greenfield/index.html#introduction)
[Youtube 学習コンテンツ](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/learningvideos/)
[GitHubのCD3リポジトリ](https://github.com/oracle-devrel/cd3-automation-toolkit)