terraform-provider-oci的导出功能非常方便
首先
在构建Oracle Cloud Infrastructure时,Terraform是不可或缺的自动化工具。但对于初学者来说,门槛很高,每次都要手动创建tf文件也很麻烦。那么,在下面的博客中发现了有导出功能,解决了这个问题。
以母语中文对以下进行复述,只需要一个选项:
在几分钟内为OCI创建Terraform配方!
简单说,它是一个将当前的区隔信息提取出来并创建tf文件的功能。所以我亲自尝试了一下。
这里记录了手册的描述。
在Oracle Cloud Infrastructure部门中发现Terraform资源。
2020/08/05附注:资源管理器已新增导出功能(资源发现)。因此,您可以通过管理控制台导出tf文件。详细信息请参阅以下页面。
-
- Release Notes: Resource Discovery
- Create Resource Manager Configuration and State Files by Discovering Existing Compartment Resources
太长不看
-
- TerraformはOracle Cloud InfrastructureのInfrastructure as Codeに欠かせない
GitHubのサンプルから手で作るのは大変
terraform-provider-oci 3.50からエクスポート機能が使えるようになった
1-2. 目标环境/前提条件
-
- Oracle Cloud Infrastructure
-
- OCI CLIがセットアップしてあること
- Linux/Mac OS(これ以外のOSでも動くハズだがテストしていない)
2. 事前准备 (Shì
在开始之前,要确认OCI CLI可以使用,并安装最新的terraform-provider-oci。
OCI CLI的操作验证
确认OCI CLI已经设置好。如果能够显示以下内容,就表示设置成功。如果没有显示,则请参考以下链接进行设置。
$ oci os ns get
{
"data": "nrvcrx1bzia3"
}
- 7系LinuxにPython3+OCI CLIをインストールする&2020/2/13以降はOCI CLIがサポートするPythonのバージョンが3.5+になる件
在中国境内安装terraform-provider-oci。
- 获取terraform-provider-oci有以下的方式。本次选择从易于理解的网页上下载的方法。
-
- Webページからダウンロード
terraform initを実行(.terraform/plugins配下にダウンロードされる)
yumでインストール
3.每个平台的模块都已经发布。由于我们要使用Oracle Linux 7,我们需要下载linux_amd64。在Mac OS上,需要下载darwin_amd64。
4. 解压下载的文件。
$ unzip terraform-provider-oci_3.67.0_linux_amd64.zip
Archive: terraform-provider-oci_3.67.0_linux_amd64.zip
inflating: terraform-provider-oci_v3.67.0_x4
将其复制到/usr/local/bin。
sudo cp terraform-provider-oci_v3.67.0_x4 /usr/local/bin/terraform-provider-oci
6. 确认无需任何选项即可执行。如果显示如下内容,则准备工作已完成。
$ terraform-provider-oci
2020/03/25 01:51:31 [INFO] terraform-provider-oci 3.67.0
2020/03/25 01:51:31 Executable runs in Terraform plugin mode by default. For additional usage options, please run with the '-help' flag.
This binary is a plugin. These are not meant to be executed directly.
Please execute the program that consumes these plugins, which will
load any plugins automatically
2. 导出tf文件
- 在导出时需要指定的是”工作区名称”和”输出目录”。
terraform-provider-oci -command=export -compartment_name=<コンパートメント名> -output_path=<出力先ディレクトリ>
以下是执行结果。输出停在某个地方的时候可能会让人感到不安,但请至少等待5分钟。如果最后显示“COMPLETED”,则表示结束。
$ terraform-provider-oci -command=export -compartment_name=work01 -output_path=./myrecipe
2020/03/25 01:54:43 [INFO] terraform-provider-oci 3.67.0
2020/03/25 01:54:43 [INFO] resolved compartment name 'work01' to compartment id 'ocid1.compartment.oc1..aaaaaaaaw5syvmuwyecuglndoy6anakd57l5yg6tbrysgfc3hvsxbz4evrmq'
2020/03/25 01:54:43 Running export command
2020/03/25 01:54:43 [INFO] resource discovery: visiting oci_identity_compartment.export
2020/03/25 01:54:43 [INFO] discovering resources with data source 'oci_identity_availability_domains'
2020/03/25 01:54:43 [INFO] resource discovery: visiting oci_identity_availability_domain.export_VPoc-AP-TOKYO-1-AD-1
2020/03/25 01:54:43 [INFO] discovering resources with data source 'oci_core_boot_volumes'
2020/03/25 01:54:43 [INFO] adding datasource query attribute 'availability_domain' from parent attribute 'name'
2020/03/25 01:54:43 [INFO] resource discovery: visiting oci_identity_compartment.export
2020/03/25 01:54:43 [INFO] discovering resources with data source 'oci_core_cpes'
★中略★
2020/03/25 01:56:53 [INFO] ===> Generating resource 'oci_identity_tag_default.export_tag_default_2'
Found 1 'availability_domain' resources. Generated under './myrecipe/availability_domain.tf'
Found 12 'core' resources. Generated under './myrecipe/core.tf'
Found 0 'database' resources. Generated under './myrecipe/database.tf'
Found 0 'load_balancer' resources. Generated under './myrecipe/load_balancer.tf'
Found 2 'object_storage' resources. Generated under './myrecipe/object_storage.tf'
Found 5 'tagging' resources. Generated under './myrecipe/tagging.tf'
=== COMPLETED ===
出力的文件如下所示。文件大小为63字节的文件是仅有注释但没有内容的文件。由于core.tf中混合了网络和计算资源,因此最好将其分开管理。
$ ls -l myrecipe/
合計 40
-rw-rw-r--. 1 opc opc 201 3月 25 01:56 availability_domain.tf
-rw-rw-r--. 1 opc opc 13907 3月 25 01:56 core.tf
-rw-rw-r--. 1 opc opc 63 3月 25 01:56 database.tf
-rw-rw-r--. 1 opc opc 63 3月 25 01:56 load_balancer.tf
-rw-rw-r--. 1 opc opc 809 3月 25 01:56 object_storage.tf
-rw-rw-r--. 1 opc opc 1584 3月 25 01:56 tagging.tf
-rw-rw-r--. 1 opc opc 170 3月 25 01:56 vars.tf
请阅读手册以了解其他选项和与IAM相关的输出方法。
- Discovering Terraform resources in an Oracle Cloud Infrastructure compartment
3. 如何使用tf文件
生成的tf文件可以直接在Terraform中使用,也可以选择使用资源管理器。
在资源管理器中使用的方法可以在开头介绍的博客中链接的YouTube视频「在几分钟内为OCI创建Terraform脚本!」的3:47左右时间段进行解释。
$ cd myrecipe
$ zip myrecipe.zip *