CD3 Automation ToolkitでOCIリソースをExcelから爆速構築！その2 リソース出力編

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

## 検証内容

前回の再掲です。
> 　- 既存リソースの取り込み必要のない前述のユースケースパターン "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）実行する  
------------------------------------------------------
 **当記事（その2）の範囲はこちら:point_up:**
-  構築したリソースをExcelファイルに出力して想定どおりか確認する
------------------------------------------------------
その3で記載予定
-  Excelファイルより、リソース更新（☆のセル値更新）とリソース削除（★の削除）操作ののちファイル更新
-  再アップロードして再度"create resources"の実行
- 生成されたTerraformコードを利用して構築（Apply）実行する

# リソース出力方法に関して
リソース情報の出力にはCD3で2通りあるようです。
1つめ：Export Resouces機能を利用する方法
2つめ：Show OCI機能を利用する方法
※単純なリソース情報Exportだけであれば2つめの利用を推奨します。理由は下記１補足をご確認ください。


## １．Export Resourcesの利用
### 概要
- CD3のnon-greenfield（Terraform管理対象だがまだ反映していないリソースが存在する状態）向けに既存リソースをExcelテンプレに出力＋既存リソースからtfvarsを生成する機能
- ExcelへのExport形式はCD3フォーマットが利用可能
- **（重要）** CD3のimport機能との併用により既存リソースのTerraform化ができる
### 補足
つまりCD3でのApply後に手動でリソース作成した場合はそれを含めてtfvarsを出力するため、本来はimport前提の使い方になります。
差分があるときはimportを実行するように気を付けましょう。（手順はこちら）
今回はCD3でリソース作成直後のため、こちらも利用できます:point_up:

## ２．Show OCIの利用
- 既存リソースをCSVなどに一括出力します（他にもJSONや標準出力に対応）
- Show OCI自体はCD3とは別で開発されており、こちらもGithubで公開 [Github](https://github.com/oracle/oci-python-sdk/tree/master/examples/showoci)されているので利用方法など必要に応じて参照してください
- CD3からShow OCIを実行することが可能です
- こちらの機能はTerraformのファイルに影響を与えないので、リソースの作成結果の検証にはこちらが向いていると思われます
- CSVでの出力列形式はCD3のものとは別となります（(下記"Show OCIファイルのダウンロード" 参照）

# 出力（Export Resources 利用の場合）
サンプルとしてphoenixに作成したObject StorageのBucketを出力します。
# 操作手順（ざっくり）
## リソース情報取得

### 空のExcelテンプレートのリネーム
その1で記入したExcelテンプレートの元となった空のファイルを、識別しやすいように任意の名称でリネームします。
例：CD3-Blank-template_terraform.xlsx⇒CD3-Blank-template_terraform_export.xlsx

### CloudShellへのアップロード
その1同様ドラッグでアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/65b08581-008c-0142-4288-0b29f748f7a8.png)

### Computeへの転送
その1を参考にしながらファイルを転送します。
※ファイル名がその1と異なるのでsshのコマンド名の引数に注意

### コンテナの起動と接続
その1を参考にしながらコンテナを起動します。

### xxx_setUpOCI.propertiesの更新
下記の更新を行います。
- workflow_type ...CD3の実行タイプを制御（export_resources）
- cd3file ...利用するExcelファイルのパスを指定

```
vi /cd3user/tenancies/(tenancy name)/(tenancy name)_setUpOCI.properties
```

```
 #path to cd3 excel eg /cd3user/tenancies/<customer_name>/CD3-Customer.xlsx
 cd3file=/cd3user/tenancies/(tenancy name)/CD3-Blank-template_terraform_export.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=export_resources
 ```

### CD3の実行
regionを設定します。
 ```
 Make sure to execute the script for 'Fetch Compartments OCIDs to variables file' under 'CD3 Services' menu option atleast once before you continue!

workflow_type set to export_resources. Export existing OCI objects and Synch with TF state
We recommend to not have any existing tfvars/tfstate files for export out directory

Enter region (comma separated without spaces if multiple) for which you want to export OCI resources; Identity and Tags will be exported from Home Region.
Press 'Enter' to export from all the subscribed regions- eg ashburn,phoenix: phoenix
 ```
 今回は例としてObject Storageの出力をおこなうため8>3と入力します。最後にリソースの存在するコンパートメント名を指定します。
 ```
 Choose appropriate option from below :

1.  Export Identity
2.  Export Governance
3.  Export Cost Management
4.  Export Network
5.  Export OCI Firewall
6.  Export DNS Management
7.  Export Compute
8.  Export Storage
9.  Export Databases
10. Export Load Balancers
11. Export Management Services
12. Export Developer Services
13. Export Security
14. Export Software-Defined Data Centers - OCVS
15. CD3 Services
q.  Press q to quit
Enter your choice (specify comma separated to choose multiple choices): 8
=======================================================Storage=======================================================
1. Export Block Volumes/Block Backup Policy
2. Export File Systems
3. Export Object Storage Buckets
q. Press q to quit
m. Press m to go back to Main Menu
Enter your choice (specify comma separated to choose multiple choices): 3
----------------------------------------------Exporting Object Storage-----------------------------------------------
Enter name of Compartment as it appears in OCI (comma separated without spaces if multiple)for which you want to export Buckets;
Press 'Enter' to export from all the Compartments: AppDev
 ```
 しばらくすると*.tfvarsやimport実行用のShellスクリプトファイルとともにExcelの出力が行われて完了します。

### Export済テンプレートファイルのダウンロード
#### コマンド例（クライアント（CloudShell）で実行）
```
scp -i .ssh/cd3/(ssh-key-xxx.key) cd3user@10.2.0.54:/cd3user/mount_path/(Tenancy name)/CD3-Blank-template_terraform_export.xlsx ./
```
#### 内容確認
create_resourcesのファイル（入力）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/d0f4cff5-fb02-c51d-8dd0-e68fd3f5830d.png)

export_resourcesのファイル(出力)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/943b4118-7e76-fe69-6033-558a62e03d51.png)

export_resources側は出力指定したphoenix側のbucket情報が出力されています。
挙動に影響がない出力順序以外はcreate_resoucesとの差分がないことを確認できました。

# 出力（Show OCI 利用の場合）
サンプルとして作成したObject StorageのBucketを出力します。
その１ Export Resourcesと違い、Show OCIではリージョンやコンパートメントを問わず出力されます。
# 操作手順（ざっくり）
## リソース情報取得

### xxx_setUpOCI.propertiesの更新
下記の更新を行います。
- workflow_type ...CD3の実行タイプを制御（create_resources）
```
vi /cd3user/tenancies/(tenancy name)/(tenancy name)_setUpOCI.properties
```
workflow_typeをcreate_resourcesに変更します。
```
 #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の実行
Show OCIは17を選択
 ```
Choose appropriate option from below :

0.  Validate CD3
1.  Identity
2.  Governance
3.  Cost Management
4.  Network
5.  OCI Firewall
6.  DNS Management
7.  Compute
8.  Storage
9.  Database
10. Load Balancers
11. Management Services
12. Developer Services
13. Security
14. Logging Services
15. Software-Defined Data Centers - OCVS
16. CD3 Services
17. Other OCI Tools
q.  Press q to quit

See example folder for sample input files

Enter your choice (specify comma separated to choose multiple choices): 17
```
2>2と選択します
2. Execute ShowOCI Scriptを選択すると直接実行が開始されます
（※ ここで先に1. Download Latest ShowOCI Scriptを実行しておくとスクリプトを最新化できるようです）
```
===================================================Other OCI Tools===================================================
1. CIS Compliance Check Script
2. ShowOCI Report
3. OCI FSDR
q. Press q to quit
m. Press m to go back to Main Menu
Enter your choice (specify comma separated to choose multiple choices): 2

---------------------------------------------------ShowOCI Report----------------------------------------------------
1. Download Latest ShowOCI Script
2. Execute ShowOCI Script
q. Press q to quit
m. Press m to go back to Main Menu
Enter your choice (specify comma separated to choose multiple choices): 2
```
しばらく待つと全リソースが出力されます
```
(略)
CSV: database_backups                    --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_database_backups.csv
CSV: database_autonomous                 --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_database_autonomous.csv
CSV: limits                              --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_limits.csv
CSV: object_storage_buckets              --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_object_storage_buckets.csv
CSV: security_loggings                   --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_security_loggings.csv
CSV: security_log_unified_agents         --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_security_log_unified_agents.csv
CSV: security_cloud_guards               --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_security_cloud_guards.csv
CSV: security_kms_vaults                 --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_security_kms_vaults.csv
CSV: paas_devops                         --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_paas_devops.csv
CSV: data_integration                    --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_data_integration.csv
CSV: monitor_agents                      --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_monitor_agents.csv
CSV: monitor_alarms                      --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_monitor_alarms.csv
CSV: monitor_topics_subs                 --> /cd3user/tenancies/harukb/othertools_files/harukb_showoci_report/harukb_monitor_topics_subs.csv


###############################################################################################
#               Completed Successfully at 2024-10-12 09:23:05 - Elapsed 00:04:25              #
###############################################################################################
=====================================================================================================================
[cd3user@c3376547c570 cd3_automation_toolkit]$ 
```
Object Storage-Bucketsファイルをダウンロードしてみます。
ダウンロード対象のファイルは以下の通り
```
/cd3user/tenancies/(tenancy name)/othertools_files/(tenancy name)_showoci_report/(tenancy name)_object_storage_buckets.csv
```
### Show OCIファイルのダウンロード
#### コマンド例（クライアント（CloudShell）で実行）
```
scp -i .ssh/cd3/(ssh-key-xxx.key) cd3user@10.2.0.54:/cd3user/mount_path/(tenancy name)/othertools_files/(tenancy name)_showoci_report/(tenancy name)_object_storage_buckets.csv ./
```
#### 内容確認
create_resourcesのファイル（入力）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/d0f4cff5-fb02-c51d-8dd0-e68fd3f5830d.png)

Show OCIの出力(.csv)をExcelファイルで表示（出力）一部マスク済
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607651/08b6beec-1038-275a-c2f2-dd1d089ff6f6.png)

- 目視で"Retention Rules","Lifecyle Exclusion Patterns"など一部カラムの出力がShow OCIには列ごと出力されていませんが、それ以外はおおむね必要な情報がBucket情報として出ているように見受けられます。
- このように出力対象外？の列情報は目視やocicli等で補完する必要があるかもしれません。
- 画像はフィルタ―済ですが、このツールはリージョン、コンパートメントをまたいでリソース出力されるため一括出力する際は大変便利ですね。