はじめに
こんにちは、id:yokoyama-mです。業務でTerraformを使用する機会があったのですが、Oracle Cloudの対応状況が気になり調べてみました。Oracle Cloud用のプロバイダーは以下となります。
No | プロバイダー | 対象リソース | 提供元 |
---|---|---|---|
1 | Terraform Provider for Oracle Cloud Platform | Oracle PaaS | Terraform(公式) |
2 | Terraform Provider for Oracle Cloud Infrastructure Classic | Oracle Cloud Infrastructure Classic | Terraform(公式) |
3 | Terraform Provider for Oracle Cloud Infrastructure | Oracle Cloud Infrastructure | Oracle |
他のメジャークラウド用のプロバイダーとは異なり、複数に分かれて提供されていることがわかりました。 また、Oracle PaaS
とOracle Cloud Infrastructure Classic
が対象のプロバイダーは公式として提供されていますが、Oracle Cloud Infrastructure
が対象のプロバイダーは公式には含まれていないこともわかりました。
今回は評価用にOracle Cloud Infrastructure
のプロバイダーを導入してみたのでその手順を紹介します。
事前準備
Terraformのインストール
以下を参考にTerraform(v0.10.x以降)をインストールしてください。
インストール
APIキーの作成と登録
APIキーを作成します。Oracle Cloud Infrastructure CLIを導入している場合はCLI用のAPIキーを使用することも可能です。
$ mkdir -p ~/.oci $ openssl genrsa -out ~/.oci/oci_tf_key.pem 2048 $ chmod go-rwx ~/.oci/oci_tf_key.pem $ openssl rsa -pubout -in ~/.oci/oci_tf_key.pem -out ~/.oci/oci_tf_key_public.pem
APIキーの秘密鍵のフィンガープリントを出力します。出力した内容をメモしておいてください。
$ openssl rsa -pubout -outform DER -in ~/.oci/oci_tf_key.pem | openssl md5 -c
APIキーの公開鍵をOCIのWEBコンソールから登録します。手順は以下の通りです(キーファイル名は適宜読み替えてください)。
Oracle Cloud Infrastructure CLIの導入 (後編:環境設定)より
OCIのコンソール Menu -> Identity -> Users -> cli-userからAPI Keyとしてoci setup configで作成したAPI公開鍵を設定します。 API公開鍵~/.oci/oci_api_key_public.pemをcatした内容を貼り付けます。
プロバイダーのインストール
以下より最新のプロバイダーをダウンロードします。ご使用の環境用のファイルを選択してください。
ダウンロードしたファイルを解凍した後に所定のディレクトリへコピーします。
$ tar xzf linux_amd64.tar.gz $ mkdir -p ~/.terraform.d/plugins $ cp linux_amd64 ~/.terraform.d/plugins/
動作確認
Terraformへ渡す情報を変数ファイルvariables.auto.tfvars
にまとめます。
tenancy_ocid="(対象テナンシーのOCIDを指定してください。)" user_ocid="(対象ユーザのOCIDを指定してください。)" compartment_ocid="(対象コンパートメントのOCIDを指定してください。)" fingerprint="(「APIキーの作成と登録」でメモしたフィンガープリントを指定してください。)" private_key_path="(「APIキーの作成と登録」で作成した秘密鍵`oci_tf_key.pem`のフルパスを指定してください。)" region="(対象のリージョンを指定します。)"
以下のサンプルをダウンロードします。
variable "tenancy_ocid" {} variable "user_ocid" {} variable "fingerprint" {} variable "private_key_path" {} variable "compartment_ocid" {} variable "region" {} provider "oci" { tenancy_ocid = "${var.tenancy_ocid}" user_ocid = "${var.user_ocid}" fingerprint = "${var.fingerprint}" private_key_path = "${var.private_key_path}" region = "${var.region}" } resource "oci_core_virtual_network" "vcn1" { cidr_block = "10.0.0.0/16" dns_label = "vcn1" compartment_id = "${var.compartment_ocid}" display_name = "vcn1" }
変数ファイルのvariables.auto.tfvars
とダウンロードしたvcn.tf
を同じディレクトリに配置しTerraformを実行します。
$ terraform init $ terraform apply
vcn1
という名称のVirtual Cloud Networkがひとつ作成されていれば成功です。
作成したリソースの後始末を行う場合は以下を実行してください。
$ terraform destroy
さいごに
Oracle Cloud Infrastructure
のプロバイダーを導入してみました。いかがだったでしょうか。次回はTerraformを実際に使用してリソースを作成してみたいと思います。