コンピュート・インスタンスの作成
Terraformを使用して、Oracle Cloud Infrastructureテナンシにコンピュート・インスタンスを作成します。
主なタスクは:
- SSHキーを作成します。
- 仮想クラウド・ネットワークをテナンシに作成します。
- Oracle Cloud Infrastructure Terraformプロバイダを使用して、ネットワークにコンピュート・インスタンスを作成します。
- インスタンスに接続します。

詳細は、次を参照してください:
開始前
このチュートリアルを正常に実行するには、次が必要です:
- Oracle Cloud Infrastructureアカウント。無料Oracle Cloudプロモーションのリクエストおよび管理を参照してください。
- MacOS、LinuxまたはWindowsコンピュータ。
- Terraformチュートリアル・リソース:
- 次のすべてのステップを実行します:
- 作成したスクリプトを次のディレクトリに保持します:
$HOME/tf-provider/
$HOME/tf-compartment/
- チュートリアルコンパートメントの作成のコンパートメントをテナンシに保持します。
1. 準備
コンピュート・インスタンスを作成するための環境を準備します。また、チュートリアルを完了するために必要なすべての情報を収集します。
- ナビゲーション・メニューを開き、「ネットワーキング」、「仮想クラウド・ネットワーク」の順に選択します。
-
「Virtual Cloud Networks」リスト・ページで、表示されるオプションに応じて次のいずれかのアクションを実行します:
- 「アクション」から、「VCNウィザードの起動」を選択します。
- 「VCNウィザードの起動」を選択します。
- 「VCNウィザードの起動」パネルで、「インターネット接続性を持つVCNの作成」を選択します。
- 「VCNウィザードの起動」を選択します。
「インターネット接続性を持つVCNの作成」ウィンドウが開きます。
1. 構成
次の基本情報を入力します。
-
VCN名: <your-vcn-name>
- コンパートメント: <your-compartment-name>
VCNの構成
-
VCN IPv4 CIDRブロック: デフォルト値のままにします: 10.0.0.0/16
-
このVCNでDNSホスト名を使用: このチェック・ボックスの選択を解除します。
パブリック・サブネットの構成
-
IPv4 CIDRブロック: デフォルト値のままにします: 10.0.0.0/24
プライベート・サブネットの構成
-
IPv4 CIDRブロック: デフォルト値のままにします: 10.0.1.0/24
パブリック・サブネットとプライベート・サブネットのネットワーク・アドレスが異なることに注意してください。
「次」を選択します。「レビューおよび作成」ページが開きます。
2. 確認および作成
完全なVCN構成を確認し、「作成」を選択します。
リソースが作成され、VCNの作成が完了したことを示すメッセージが表示されます。
作成されたVCNを表示するには、「VCNの表示」を選択します。
コンピュート・インスタンスをホストするVCNが正常に作成されました。
必要な情報を収集し、メモ帳にコピーします。
- コンパートメント名
- コンパートメントID
- サブネットID
- ソースID (コンピュート・インスタンスのイメージ)
- シェイプ(コンピュート・インスタンス)
- SSH認可キー(公開キーのパス)
- 秘密キー・パス
この情報を収集する手順については、次の表を参照してください。
項目 | アイテムを収集するステップ |
---|---|
コンパートメント名 | 完成したチュートリアルコンパートメントの作成を参照してください。 |
コンパートメントID |
|
インスタンス表示名 | 選択した名前。 |
サブネットID |
|
ソースID (コンピュート・インスタンスのイメージ) |
|
シェイプと構成(コンピュート・インスタンス) |
ノート: |
SSH認可キー(公開キーのパス) | 「SSH暗号化キーの作成」の項を参照してください。このパスは、コンピュート・インスタンスを設定するときに使用します。 |
秘密キー・パス | 「SSH暗号化キーの作成」の項を参照してください。この秘密キーは、コンピュート・インスタンスに接続するときに使用します。 |
ユーザー名がAdministrators
グループ内にある場合は、この項をスキップしてください。それ以外の場合は、テナンシに次のポリシーを追加するよう管理者に依頼してください:
allow group <a-group-your-username-belongs-to> to manage all-resources in compartment <your-compartment-name>
この権限を使用すると、コンパートメント内のすべてのリソースを管理でき、そのコンパートメントでの管理権限が付与されます。
- コンソールで、ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」にある「ポリシー」を選択します。
- コンパートメントを選択します。
- 「ポリシーの作成」を選択します。
- 「ポリシーの作成」ページで、次の値を入力します:
- 名前:
manage-<your-compartment-name>-resources
- 説明:
Allow users to list, create, update, and delete resources in <your-compartment-name>.
- コンパートメント:
<your-tenancy>(root)
- 名前:
- 「ポリシー・ビルダー」に、次の値を入力します:
- ポリシー・ユース・ケース:
コンパートメント管理
- 共通ポリシー・テンプレート:
コンパートメント管理者がコンパートメントを管理できるようにします
- アイデンティティ・ドメイン: <identity-domain>
- グループ:
<a-group-your-username-belongs-to>
- 場所:
<your-compartment-name>
- ポリシー・ユース・ケース:
- 「作成」を選択します。
参照: 共通ポリシー
2. スクリプトの作成
認証、データのフェッチ、コンピュート・インスタンスの作成および出力の印刷用のスクリプトを作成します。
最初に、Terraformスクリプトのディレクトリを設定します。次に、OCI Terraformの設定チュートリアルからプロバイダおよびバージョンのスクリプトをコピーして、Oracle Cloud Infrastructureアカウントがこのディレクトリから実行されているスクリプトを認証できるようにします。
アカウントから可用性ドメインの名前をフェッチします。可用性ドメインは、コンピュート・インスタンスの作成に必要な入力のいずれかです。
最初のチュートリアル「OCI Terraformの設定」で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" = "xxxx: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構成の取得を参照してください。
Terraformでは、リソースとは仮想クラウド・ネットワーク(VCNs)やコンピュート・インスタンスなどのオブジェクトです。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スクリプトを実行して、テナンシのコンパートメントにコンピュート・インスタンスを作成します。SSHキーを使用してインスタンスに接続します。インスタンスが不要になった場合は、Terraformで破棄します。
完了!Terraformを使用して、Oracle Cloud Infrastructureアカウントにコンピュート・インスタンスが正常に作成されました。
参照:
次の処理
次のTerraformチュートリアルについては、次を参照してください:
Oracle製品を使用した開発の詳細を確認するには、次のサイトを参照してください: