Terraform: OCI Terraformの設定
このチュートリアルでは、Terraformレジストリに記載されているOracle Cloud Infrastructure Terraformプロバイダのスクリプトを設定して、OCIアカウントに接続します。設定を確認するには、テナンシから情報をフェッチします。
主なタスクは:
- RSAキーを作成します。
- Oracle Cloud Infrastructure Terraformプロバイダ・スクリプトを設定します:
- Terraformスクリプトを認証します。
- テナンシ内の可用性ドメインに関する情報を取得します。
![ローカル環境からOracle Cloud Infrastructureテナンシに接続されているユーザーのダイアグラム。ローカル環境はLinuxで、Terraformがインストールされています。クラウドのTerraformレジストリに接続されているローカル環境のTerraformから矢印が出ています。「Authenticate?」というラベルの付いた、ユーザーのOracle Cloud Infrastructureテナンシにメッセージを送信するローカル環境からの別の矢印があります。3つ目の矢印は、テナンシから「データのフェッチ」というラベルの付いたローカル環境に向かっています。これらの矢印は、ユーザーがテナンシによって認証されるようにTerraformスクリプトを設定したことを示しています。ユーザーは、TerraformおよびTerraformレジストリを使用して、テナンシから情報をフェッチできます。テナンシには、3つの可用性ドメインが表示されます。これは、ユーザーがフェッチしている情報です。](images/terraform-setup-diagram.png)
その他の情報については、次のWebサイトを参照してください。
開始する前に
このチュートリアルを正常に実行するには、次が必要です:
- Oracle Cloud Infrastructureアカウント。Oracle Cloud Infrastructureへのサインアップを参照してください。
- MacOS、LinuxまたはWindows環境:
- MacOS
- Linux (任意のディストリビューション)
- Always Freeコンピュート・シェイプのLinux VMをOracle Cloud Infrastructureにインストールできます:
- Oracle Cloud Infrastructure Cloud Shell:
- Windows Subsystem for Linux (WSL)
- Linux VMにアクセスするためのGit for Windows。
このチュートリアルでは、その例としてAMDシェイプを使用したOracle Linux VM環境を使用しますが、この項で説明する任意の環境を使用できます。
1. 準備
Terraformスクリプトを認証および実行するために環境を準備します。また、アカウントがスクリプトの認証に必要な情報を収集します。
このチュートリアルでは、OCI Resource Managerでサポートされている最新バージョンのTerraformをインストールすることをお薦めします。Resource Managerは、OCIリソースのTerraformテンプレートを作成するためのサービスです。後でTerraformスクリプトでResource Managerを使用する場合、使用しているTerraformのバージョンがサポートされます。
ユーザー名が管理者グループ内にある場合は、この項をスキップしてください。そうでない場合は、テナンシに次のポリシーを追加するよう管理者に依頼してください:
allow group <the-group-your-username-belongs> to read all-resources in tenancy
この権限を持つユーザーは、テナンシ内のすべてのリソースをリストできます。
- 上部のナビゲーション・バーで、「プロファイル」メニューを開きます。
- ユーザー名をクリックします。
- 左ペインで、「グループ」をクリックします。
- メモ帳で、ユーザー名が属するグループ名をコピーします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。
- 「コンパートメント」ドロップダウンから
<your-tenancy>(root)
を選択します。 - 「ポリシーの作成」をクリックします。
- 次の情報を入力します:
- Name:
list-resources
- 説明:
グループ<the-group-your-username-belongs>に、このテナンシ内のリソースのリストを許可します。
- コンパートメント:
<your-tenancy>(root)
- Name:
- 「ポリシー・ビルダー」で、「手動エディタの表示」をクリックします。
- 次のポリシーを貼り付けます:
allow group <the-group-your-username-belongs> to read all-resources in tenancy
- 「作成」をクリックします。
参照: 共通ポリシー
Terraformスクリプトの認証に必要な情報を準備し、情報をメモ帳にコピーします。
2. スクリプトの作成
3つのスクリプトを作成します: 1つは認証用、もう1つはアカウントからのデータのフェッチ用、もう1つは出力の印刷用です。
まず、Terraformスクリプトのディレクトリを設定します。次に、OCIアカウントがこのディレクトリから実行されているスクリプトを認証できるように、プロバイダ・スクリプトを追加します。
APIキー・ベースの認証には次の変数を使用します:
- tenancy_ocid
- user_ocid
- private_key_path
- フィンガープリント
- リージョン
プロバイダをインストールする必要はありません。このチュートリアルのスクリプトを実行すると、プロバイダがダウンロードされます。
この項では、テナンシ内の可用性ドメインのリストをフェッチします。データをフェッチすることで、OCIアカウントがprovider.tf
スクリプトを認証し、アカウントから情報を取得することを確認します。
Terraformでデータをフェッチするには、データ・ソースを使用します。データ・ソースからのデータのフェッチは、REST APIのGETメソッドに似ています。
- Oracle Cloud Infrastructureプロバイダに移動します。
- 左側のナビゲーション・フィルタで、
availability domains
と入力します。 - 「アイデンティティ」で、「データ・ソース」に移動し、「oci_identity_availability_domains」をクリックします。
- ページのタイトルからデータ・ソース名を検索します:
- データ・ソース:
oci_identity_availability_domains
- データ・ソース:
- 引数リファレンスの項で、(必須)というラベルの付いたすべての引数(入力)を見つけます:
- compartment_id
- データ・ソース・ブロックを作成します:
- キーワード
data
を使用してデータ・ソースを宣言します。 - データ・ソース名
"oci_identity_availability_domains"
のラベルを追加します - ローカル名の任意のラベルを追加します:
- ラベルには、文字、数字、アンダースコア(_)およびハイフン(-)を含めることができます。最初の文字は数字にできません。
- このチュートリアルでは、ローカル名
"ads"
を使用してdata "oci_identity_availability_domains" "ads"
を構成します。
- コード・ブロック内で、必要なすべての引数の値を指定します。
- 例:
compartment_id = "<some-compartment-ocid>"
- 例:
- オプションの引数には、フェッチ結果を絞り込むための値を指定します。一部のデータ・ソースにのみオプションの引数があります。
- キーワード
データ・ソースoci_identity_availability_domains
は、可用性ドメインのリストをフェッチします。この項では、フェッチされた情報を印刷する出力ブロックを宣言します。
- データ・ソース: oci_identity_availability_domainsページで、属性リファレンスに移動します。ノート
属性は、oci_identity_availability_domainsデータ・ソースに対して返すことができる出力です。 - 属性を検索します:
- 属性: availability_domains:
- 可用性ドメインのリスト
- availability_domainsを出力すると、リスト内の可用性ドメインごとに、3つの属性が表示されます:
- compartment_id
- id
- 名前
- 属性: availability_domains:
- データ・ソース出力ブロックを作成します:
- キーワード
output
を使用して出力ブロックを宣言します - 出力結果とともに印刷するラベルを追加します:
- ラベルには、文字、数字、アンダースコア(_)およびハイフン(-)を含めることができます。最初の文字は数字にできません。
- 例:
"all-availability-domains-in-your-tenancy"
- コード・ブロック内で、次の式を使用してデータ・ソース出力の値を入力します:
value = data.<data-source-name>.<local-name-for-data-source>.<attribute>
- 例:
value = data.oci_identity_availability_domains.ads.availability_domains
- キーワード
3. スクリプトの実行
Terraformスクリプトを実行します。アカウントがスクリプトを認証した後、Terraformはテナンシの可用性ドメインをフェッチします。
tf-provider
ディレクトリの作業ディレクトリを初期化します。
実行計画を作成して、実際のリソースに変更を加えずに、実行計画に表示される変更が期待どおりであるかどうかを確認します。
完了しました。これで、Oracle Cloud Infrastructureアカウントは、Oracle Cloud Infrastructure Terraformプロバイダ・スクリプトを認証できます。
参照:
Terraformスクリプトの実行中に、次のエラー・メッセージが表示される場合があります。
401エラー- (Service error:NotAuthenticated)
次の変数のいずれかの値が間違っています:
- テナントOCID
- ユーザーOCID
- 指紋
- RSA秘密キー(パスまたはキー)
クライアントを作成できません。構成が正しくありません: 秘密キーの正しい構成が見つかりませんでした
TerraformスクリプトでRSA秘密キーが見つかりません。
そのようなホストはありません
リージョン識別子の値が正しくありません。
- コンソールの上部のナビゲーション・バーで、リージョンを検索します。
-
リージョンおよび可用性ドメインにリストされている表で、リージョンの
<region-identifier>
を見つけます。例:us-ashburn-1
。 -
provider.tf
ファイルで、<region-identifier>の値を更新して再試行してください。
使用可能なプロバイダ・パッケージの問合せに失敗しました
VPNを使用している場合は、プロキシ設定を確認します。
次の手順
次のTerraform: スタート・ガイド・チュートリアルは、次を参照してください:
Oracle製品を使用した開発の詳細を確認するには、次のサイトを参照してください: