Terraform: コンピュート・インスタンスの作成
このチュートリアルでは、Terraformを使用して、Oracle Cloud Infrastructureテナンシにコンピュート・インスタンスを作成します。
主なタスクは:
- SSHキーを作成します。
- 仮想クラウド・ネットワークをテナンシに作成します。
- Oracle Cloud Infrastructure Terraformプロバイダを使用して、ネットワークにコンピュート・インスタンスを作成します。
- インスタンスに接続します。
その他の情報については、次のWebサイトを参照してください。
開始する前に
このチュートリアルを正常に実行するには、次が必要です:
- Oracle Cloud Infrastructureアカウント。Oracle Cloud Infrastructureへのサインアップを参照してください。
- MacOS、LinuxまたはWindowsコンピュータ。
- Terraformチュートリアル・リソース:
- 次のすべてのステップを実行します:
- 作成したスクリプトを次のディレクトリに保持します:
$HOME/tf-provider/
$HOME/tf-compartment/
- コンパートメントの作成チュートリアルのコンパートメントをテナンシに保持します。
1. 準備
コンピュート・インスタンスを作成するための環境を準備します。また、チュートリアルを完了するために必要なすべての情報を収集します。
SSH暗号化キーの作成
Linuxインスタンスをインターネットに接続するように、VCNを設定します。仮想ネットワークの作成に必要なすべてのコンポーネントを構成します。
必要な情報を準備し、メモ帳にコピーします。
ユーザー名が管理者グループ内にある場合は、この項をスキップしてください。それ以外の場合は、管理者に依頼してテナンシに次のポリシーを追加します:
allow group <the-group-your-username-belongs> to manage all-resources in compartment <your-compartment-name>
この権限を使用すると、コンパートメント内のすべてのリソースを管理でき、基本的にそのコンパートメントでの管理権限が付与されます。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。
- 「コンパートメント」ドロップダウンからコンパートメントを選択します。
- 「ポリシーの作成」をクリックします。
- 次の情報を入力します:
- 名前:
manage-<your-compartment-name>-resources
- 説明:
ユーザーが<your-compartment-name>のリソースをリスト、作成、更新および削除できるようにします。
- コンパートメント:
<your-tenancy>(root)
- 名前:
- 「ポリシー・ビルダー」で、次の選択肢を選択します:
- ポリシー・ユース・ケース:
コンパートメント管理
- 共通ポリシー・テンプレート:
コンパートメント管理者がコンパートメントを管理できるようにします
- グループ:
<the-group-your-username-belongs>
- 場所:
<your-tenancy>(root)
- ポリシー・ユース・ケース:
- 「作成」をクリックします。
参照: 共通ポリシー
2. スクリプトの作成
4つのスクリプトを作成します: 1つは認証用、もう1つはデータのフェッチ用、もう1つはコンピュート・インスタンスの作成用、もう1つは出力の印刷用です。
最初に、Terraformスクリプトのディレクトリを設定します。次に、Oracle Cloud Infrastructureアカウントがこのディレクトリから実行されるスクリプトを認証できるように、プロバイダ・スクリプトを追加します。
アカウントから可用性ドメインの名前をフェッチします。可用性ドメインは、コンピュート・インスタンスの作成に必要な入力の1つです。
最初のチュートリアルでOCI Terraformを設定すると、出力ブロックに次のコードが含まれます:
value = data.oci_identity_availability_domains.ads.availability_domains
その後、次のような出力が表示されます:
Outputs:
all-availability-domains-in-your-tenancy = tolist([
{
"compartment_id" = "ocid1.tenancy.xxx"
"id" = "ocid1.availabilitydomain.xxx"
"name" = "QnsC:US-ASHBURN-AD-1"
},
{
"compartment_id" = "ocid1.tenancy.xxx"
"id" = "ocid1.availabilitydomain.xxx"
"name" = "QnsC:US-ASHBURN-AD-2"
},
{
"compartment_id" = "ocid1.tenancy.xxx"
"id" = "ocid1.availabilitydomain.xxx"
"name" = "QnsC:US-ASHBURN-AD-3"
},
])
ここで、リスト内の最初の可用性ドメインの名前をフェッチして、後でコンピュート・インスタンスの場所に使用します:
"name" = "QnsC:US-ASHBURN-AD-1"
- データ・ソース: oci_identity_availability_domainsの属性は:
- availability_domains。3つの文字列属性を含むリスト:
- compartment_id
- id
- 名前
- availability_domains。3つの文字列属性を含むリスト:
- リスト属性に索引を追加するには、大カッコを使用します。
- リスト内の最初のアイテムには索引0を使用します。
- リストの属性を指定するには、大カッコの後にドットを使用し、その後にリストの属性を続けます。
- 例: リスト内の最初のアイテム:
value = data.oci_identity_availability_domains.ads.availability_domains[0]
- 例: リスト内の最初のアイテムの名前:
value = data.oci_identity_availability_domains.ads.availability_domains[0].name
Oracle Cloud Infrastructureコンピュート・リソースを宣言してから、インスタンスの詳細を定義します。
Terraformでは、リソースとは仮想クラウド・ネットワークやコンピュート・インスタンスなどのオブジェクトです。Terraformを使用してこれらを作成、更新および削除できます。コンピュート・リソースを宣言するには:
- Oracle Cloud Infrastructureプロバイダに移動します。
- 左側のナビゲーション・フィルタで、
core instance
と入力します。結果は、複数のサービスのデータ・ソースとリソースの両方に対して返されます。
- 「コア」で、「リソース」に移動し、「oci_core_instance」をクリックします。
- ページのタイトルからリソース・タイプを検索します:
- タイプ:
oci_core_instance
- タイプ:
- 引数リファレンスの項では、(必須)というラベルの付いた次の引数(入力)を使用します:
- availability_domain
- compartment_id
- 形状
- source_details
- source_id
- source_type
- リソース・ブロックを作成します:
- キーワード
resource
を使用してリソース・ブロックを宣言します - リソース・タイプ
"oci_core_instance"
のラベルを追加します - ローカル名のラベルを追加します(任意):
- ラベルには、文字、数字、アンダースコア(_)およびハイフン(-)を含めることができます。最初の文字は数字にできません。
- 例:
"ubuntu_instance"
- コード・ブロック内で、必要な引数の値を指定します。デフォルト値はありません。
- オプションの引数には、オーバーライドする引数の値を指定します。それ以外の場合は、デフォルト値が使用されます。
- キーワード
出力ブロックをコードに追加して、Terraformがコンピュート・インスタンスを作成した後にコンピュート・インスタンスに関する情報を取得します。
- リソース: oci_core_instanceページで、属性リファレンスに移動します。ノート
属性は、oci_core_instanceリソースに対して返すことができる出力です。 - パブリックIP
public_ip
の属性を検索します。 public_ip
のリソース出力ブロックを作成します:- 値式には、次のフォーマットを使用します:
value = <type>.<local-name-for-resource>.<attribute>
- 例:
value = oci_core_instance.ubuntu_instance.public_ip
- 値式には、次のフォーマットを使用します:
- 次の出力ごとに出力ブロックを作成します:
- display_name
- id
- リージョン
- 形状
- 状態
- ocpus
- memory_in_gbs
- time_created
3. スクリプトの実行
Terraformスクリプトを実行します。アカウントがスクリプトを認証した後、Terraformはテナンシのコンパートメントにコンピュート・インスタンスを作成します。SSHキーを使用してインスタンスに接続します。インスタンスが不要になった場合は、Terraformで破棄します。
完了しました。Terraformを使用して、Oracle Cloud Infrastructureアカウントにコンピュート・インスタンスが正常に作成されました。
参照:
次の手順
次のTerraform: スタート・ガイド・チュートリアルは、次を参照してください:
Oracle製品を使用した開発の詳細を確認するには、次のサイトを参照してください: