2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【OCI】oracle cloud -Terraformで環境構築-

Posted at

Terraformとは

インフラ構築や設定をコード(テンプレートファイル)を使って自動化するためのツールで、
Infrastructure as Codeによるコードベースで安全で効率的にインフラを管理できる。

複数クラウドに対応しており、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のコンソールからガバナンス→タグ・ネームスペースで作成する

自分が利用しているTerraformのコードを簡略化したものをgithubに上げています。
https://github.com/manaki-naoe/oci-terraform
この記事ではこのコード使用していますので、
クローンして見ながら記事を見る事をお勧めします。

構成図

このような構成を作成するためのterraformになっています。
Untitled Diagram.png

ファイルの紹介

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

変数は宣言した上で、値を代入する必要があり、
変数の宣言しているファイルではデフォルト値を代入しています。
デフォルト値以外にしたい場合は~.auto.tfvarsで値を代入して使用します。

dbサーバがいらない場合などは
dbservers.tf
dbserversvar.tf
dbservers.auto.tfvars
の3つを消すなどカスタマイズしてください。

Step.1

変数の編集

file variable value
common.tf compartment_ocid コンパートメントのOCIDを入力してください。
defined_tag タグのネームスペース.キーを入力してください。
defined_tag_value ご自由にタグの値を入力してください。
instance_ssh_public_key インスタンスに設置する公開鍵の値を入力してください。
provaider-var.tf tenancy_ocid テナンシのOCIDを入力してください。
user_ocid ユーザのOCIDを入力してください。
fingerprint 登録したAPIキーのフィンガープリントを入力してください。
private_key_path APIキーのプライベートキーがあるパスを入力してください。
region 東京リージョン以外を利用する場合はリージョンを入力してください。
network.auto.tfvars vcn_cidr_block VCNのCIDRを入力してください。
vcn_display_name OCIのコンソールで表示されるVCN名を入力してください。
vcn_dns_label VCNのDNS label名を入力してください。
internet_gateway_display_name OCIのコンソールで表示されるインターネットゲートウェイ名を入力してください。
nat_gateway_display_name OCIのコンソールで表示されるNATゲートウェイ名を入力してください。
availability_domain アベイラビリティドメイン(OCIのコンソールからインスタンスを作成する際にAD名が表示されています)を入力してください。
elb_subnet_cidr_block lbサブネットのCIDRを入力してください。
admin_subnet_cidr_block adminサブネットのCIDRを入力してください。
web_subnet_cidr_block webサブネットのCIDRを入力してください。
db_subnet_cidr_block dbサブネットのCIDRを入力してください。
adminservers.auto.tfvars NumInstances_admin 作成するインスタンスの台数を入力してください。
instance_shape_admin 作成するインスタンスのシェイプを入力してください。
instance_host_name_admin 作成するインスタンスのホスト名を入力してください。
instance_display_name_admin OCIのコンソールで表示されるインスタンス名を入力してください。
instance_volume_size_admin ルートボリュームサイズを入力してください。
private_ip_admin 内部IPアドレスを入力してください。
webservers.auto.tfvars NumInstances_web 作成するインスタンスの台数を入力してください。
instance_shape_web 作成するインスタンスのシェイプを入力してください。
instance_host_name_web 作成するインスタンスのホスト名を入力してください。
instance_display_name_web OCIのコンソールで表示されるインスタンス名を入力してください。
instance_volume_size_web ルートボリュームサイズを入力してください。
private_ip_web 内部IPアドレスを入力してください。
dbservers.auto.tfvars NumInstances_db 作成するインスタンスの台数を入力してください。
instance_shape_db 作成するインスタンスのシェイプを入力してください。
instance_host_name_db 作成するインスタンスのホスト名を入力してください。
instance_display_name_db OCIのコンソールで表示されるインスタンス名を入力してください。
instance_volume_size_db ルートボリュームサイズを入力してください。
private_ip_db 内部IPアドレスを入力してください。

Step.2

Terraformコンテナの起動

dockerにてterraformコンテナを立ち上げます。

※terraformコンテナに関してはURLを参考にしてください※

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

terraform initの実行

configファイルのパースが行われ、
ociのpluginがダウンロード・インストールされます。
不備がある場合はエラーとなります。

terraform init

$ 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 planの実行

変更予定の情報を出力します。

terraform plan -out=<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の実行

出力したplanの内容でリソースの作成を行います。

terraform apply "<plan名>"

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

問題がなければOCIのコンソールで確認すれば作成されているはずです。

備考

OCI用のterraformマニュアル

githubで公開しているコード

実際に使用したterraformを少し簡略したものです。
不具合がある場合はご報告頂ければ修正していきたいと思います。
https://github.com/manaki-naoe/oci-terraform

追記

作成したコードを記事上で紹介していないので、
時間がある時にこの記事を修正していきたいと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?