【OCI】Oracle Cloud-通过Terraform进行环境建设-

Terraform是一种工具或平台。

通过使用代码(模板文件)来自动化基础设施的构建和配置的工具,可以通过基础设施即代码来以代码为基础来安全高效地管理基础设施。

可以适用于多个云端,不仅仅是OCI,还可以在其他云端上使用Terraform。

准备工作

需要准备好Terraform的执行环境。
这次将使用之前文章中创建的Docker容器。
https://qiita.com/manaki079/items/34053de1224ae3b7fb2b

请准备以下内容

やること内容APIキーの登録OCIのコンソールからユーザ詳細ページで公開鍵をterraformを利用するユーザに登録する登録したAPIキーのフィンガープリントをメモするOCIのコンソールからユーザ詳細ページでフィンガープリントを確認するユーザのOCIDをメモするOCIのコンソールからユーザ詳細ページでOCIDを確認するテナンシのOCIDをメモするOCIのコンソールからテナンシ詳細ページでOCIDを確認するコンパートメントのOCIDをメモするOCIのコンソールからコンパートメント詳細ページでOCIDを確認するタグのネームスペース.キーを作成するOCIのコンソールからガバナンス→タグ・ネームスペースで作成する

我在GitHub上上传了简化了的Terraform代码,该代码是我自己使用的。
https://github.com/manaki-naoe/oci-terraform
本文中使用了这段代码,建议您在查看文章时克隆并参考这段代码。

构成图

Untitled Diagram.png

文件介绍

ファイル名内容provider.tfプロバイダ情報の指定provider-var.tfprovider.tfで使用している変数の宣言common.tf共通して利用する変数の宣言network.tfネットワーク関連リソースの作成network-var.tfnetwork.tfで使用している変数の宣言network.auto.tfvarsnetwork-var.tfで宣言した変数へ値を代入するadminservers.tfadmin用インスタンスの作成adminserversvar.tfadminservers.tfで使用している変数の宣言adminservers.auto.tfvarsadminserversvar.tfで宣言した変数へ値を代入するwebservers.tfweb用インスタンスの作成webserversvar.tfwebservers.tfで使用している変数の宣言webservers.auto.tfvarswebserversvar.tfで宣言した変数へ値を代入するdbservers.tfdb用インスタンスの作成dbserversvar.tfdbservers.tfで使用している変数の宣言dbservers.auto.tfvarsdbserversvar.tfで宣言した変数へ値を代入する

在声明变量后,需要给它赋值。
在声明变量的文件中,默认赋予了默认值。
如果想要使用不同于默认值的值,可以在~.auto.tfvars文件中进行赋值。

如果不需要DB服务器等情况,可以根据需要自定义删除以下三个文件:dbservers.tf、dbserversvar.tf和dbservers.auto.tfvars。

第一步

编辑变量

filevariablevaluecommon.tfcompartment_ocidコンパートメントのOCIDを入力してください。
defined_tagタグのネームスペース.キーを入力してください。
defined_tag_valueご自由にタグの値を入力してください。
instance_ssh_public_keyインスタンスに設置する公開鍵の値を入力してください。provaider-var.tftenancy_ocidテナンシのOCIDを入力してください。
user_ocidユーザのOCIDを入力してください。
fingerprint登録したAPIキーのフィンガープリントを入力してください。
private_key_pathAPIキーのプライベートキーがあるパスを入力してください。
region東京リージョン以外を利用する場合はリージョンを入力してください。network.auto.tfvarsvcn_cidr_blockVCNのCIDRを入力してください。
vcn_display_nameOCIのコンソールで表示されるVCN名を入力してください。
vcn_dns_labelVCNのDNS label名を入力してください。
internet_gateway_display_nameOCIのコンソールで表示されるインターネットゲートウェイ名を入力してください。
nat_gateway_display_nameOCIのコンソールで表示されるNATゲートウェイ名を入力してください。
availability_domainアベイラビリティドメイン(OCIのコンソールからインスタンスを作成する際にAD名が表示されています)を入力してください。
elb_subnet_cidr_blocklbサブネットのCIDRを入力してください。
admin_subnet_cidr_blockadminサブネットのCIDRを入力してください。
web_subnet_cidr_blockwebサブネットのCIDRを入力してください。
db_subnet_cidr_blockdbサブネットのCIDRを入力してください。adminservers.auto.tfvarsNumInstances_admin作成するインスタンスの台数を入力してください。
instance_shape_admin作成するインスタンスのシェイプを入力してください。
instance_host_name_admin作成するインスタンスのホスト名を入力してください。
instance_display_name_adminOCIのコンソールで表示されるインスタンス名を入力してください。
instance_volume_size_adminルートボリュームサイズを入力してください。
private_ip_admin内部IPアドレスを入力してください。webservers.auto.tfvarsNumInstances_web作成するインスタンスの台数を入力してください。
instance_shape_web作成するインスタンスのシェイプを入力してください。
instance_host_name_web作成するインスタンスのホスト名を入力してください。
instance_display_name_webOCIのコンソールで表示されるインスタンス名を入力してください。
instance_volume_size_webルートボリュームサイズを入力してください。
private_ip_web内部IPアドレスを入力してください。dbservers.auto.tfvarsNumInstances_db作成するインスタンスの台数を入力してください。
instance_shape_db作成するインスタンスのシェイプを入力してください。
instance_host_name_db作成するインスタンスのホスト名を入力してください。
instance_display_name_dbOCIのコンソールで表示されるインスタンス名を入力してください。
instance_volume_size_dbルートボリュームサイズを入力してください。
private_ip_db内部IPアドレスを入力してください。

第二步

启动Terraform容器

使用Docker来启动Terraform容器。

请参考以下URL了解Terraform容器相关信息。

$ docker-compose up -d
$ docker exec -it terraform_container /bin/sh
$ cd oci-terraform/environment/production

执行terraform init。

会对配置文件进行解析,然后下载并安装oci插件。如果出现错误或不完整,则会报错。

初始化Terraform

$ terraform init

Initializing the backend...

Initializing provider plugins...

The following providers do not have any version constraints in configuration,
so the latest version was installed.

To prevent automatic upgrades to new major versions that may contain breaking  
changes, it is recommended to add version = "..." constraints to the
corresponding provider blocks in configuration, with the constraint strings    
suggested below.

* provider.oci: version = "~> 3.36"

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see  
any changes that are required for your infrastructure. All Terraform commands  
should now work.

If you ever set or change modules or backend configuration for Terraform,      
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

执行terraform计划

输出即将更改的信息。

请对以下内容进行中文本地化释义,只需要一种选择:
terraform plan -out=<plan名>

生成Terraform计划文件,并命名为<plan名>。

$ terraform plan -out=test
# 長いので省略
This plan was saved to: test

To perform exactly these actions, run the following command to apply:
    terraform apply "test"

执行 terraform apply

根据制定的计划执行,进行资源的创建。

使用 Terraform 应用 “<计划名称>”

$ terraform apply "test"
# 長いので省略
Apply complete! Resources: 11 added, 0 changed, 0 destroyed.

如果没有任何问题,你应该可以在OCI控制台上确认它是否已经创建。

筆試/考試備考

OCI的Terraform手册

我在GitHub上公开的代码。

以下是对实际使用的terraform进行了一些简化。
如果存在任何问题,请告知,我们会进行修正。
链接:https://github.com/manaki-naoe/oci-terraform

附加记录

由于还没有在文章中介绍已创建的代码,
所以我计划在有时间的时候对这篇文章进行修改。

广告
将在 10 秒后关闭
bannerAds