コンテンツにスキップ

Phase 0:環境準備

目標

ローカル PC の Terraform から API キー(API Key)で OCI を操作できるようにし、作業を始める前に費用アラートを設定しておきます。

ローカル PC

  • Terraform:winget install --id Hashicorp.Terraform -e
  • VS Code 拡張機能:hashicorp.terraform(シンタックスハイライト、補完)

ヒント

Terraform をインストールした直後は、すでに開いているターミナルでは terraform コマンドが認識されません。ターミナルを開き直せば解決します(PATH はターミナル起動時に読み込まれるため)。

OCI コンソール(GUI)での準備

1. コンパートメント(Compartment)

アイデンティティとセキュリティ(Identity & Security)→ コンパートメント(Compartments)→ コンパートメントの作成(Create Compartment)

  • 名前は tf-lab、親は root
  • 練習用のリソースはすべてここに置く → 確認しやすく、片付けやすく、予算(Budget)も個別に設定できる

2. 予算アラート

請求とコスト管理(Billing & Cost Management)→ 予算(Budgets)

対象 金額 アラート
コンパートメント tf-lab $1 実績が 1% を超えたとき
root(テナンシ(Tenancy)全体) $5 同上

3. API キー

右上のプロフィール・アイコン → マイ・プロファイル(My profile)→ API キー(API keys)→ API キーの追加(Add API key)→ API キー・ペアの生成(Generate API key pair)

  • 秘密鍵をダウンロードして ~/.oci/ に置く(プロジェクト・ディレクトリや Git には絶対に入れない)
  • Add をクリックすると、コンソールに config のスニペットが表示される

4. ~/.oci/config

[DEFAULT]
user=ocid1.user.oc1..xxxx
fingerprint=xx:xx:...
tenancy=ocid1.tenancy.oc1..xxxx
region=ap-osaka-1
key_file=C:\Users\<you>\.oci\oci_api_key.pem

Terraform の provider にはプロファイル名だけを書き、認証情報はすべてこのファイルから読み込みます。

provider "oci" {
  config_file_profile = "DEFAULT"
  region              = var.region
}

ハマりどころ

did not find a proper configuration for private key

コンソールが生成するスニペットは key_file=<path to your private keyfile> # TODO になっています。 OCI の config は行末コメントに対応していないため、# TODO がパスの一部として扱われます。パスを書き換えるときは # TODO も一緒に削除します。

Git に入れないもの

.gitignore で最初から次のファイルを除外しています。

ファイル 理由
*.tfstate リソースの詳細情報、場合によってはパスワードまで含まれる
*.tfvars(*.tfvars.example だけをコミット) OCID、ローカル PC の IP などの環境情報
*.pem / *.key 秘密鍵
backend.hcl オブジェクト・ストレージ(Object Storage)のネームスペース(Namespace)など