WindowsシステムでのTerraformの構成について

Terraformを使用してOracle Cloud Infrastructureコンポーネントを作成するには、Terraformをダウンロードしてインストールする必要があります。必要なインフラストラクチャ・コンポーネントを作成する構成ファイルを作成するTerraformモジュールもダウンロードします。

TerraformをインストールしてTeraformモジュールを保存するシステムは、オンプレミスまたはクラウドのいずれかになります。便宜上、これはローカル・システムまたはローカル・ホストと呼ばれます。

Terraformを実行する前に、次のようにします。

  • コンピュート・インスタンスにアクセスできるようにするために使用するSSH鍵ペアを生成します

  • Terraformによって行われたAPIコールの認証に使用するAPI署名キーの生成

  • アクセスの認証とそのプランの実行にTerraformによって使用される環境変数を設定します

これらの手順を完了したら、Terraform構成ファイルを適用して、インフラストラクチャ・コンポーネントをOracle Cloud Infrastructure上に作成します。

Terraformのインストール

TerraformをWindowsシステムにインストールするには、Terraform Webサイトから適切なパッケージをダウンロードします。

  1. https://www.terraform.io/downloads.htmlに移動します。
  2. ローカル・システムに適切なパッケージをダウンロードします。
  3. パッケージをフォルダC:\Program Files (x86)に抽出します。
    このパスは例として使用されます。ただし、Terraform実行可能ファイルを、ローカル・システムの他の場所に移動することもできます。
  4. Terraform実行可能ファイルが格納されているフォルダを含めるように、パス環境変数を更新します。
    1. コントロール・パネル」に移動します。
    2. システム」をクリックします。
    3. Windows 10システムで、「詳細システム設定」をクリックします。このオプションはWindowsのバージョンによって異なる場合があります。
      システム・プロパティ」ウィンドウの「詳細」タブが表示されます。
    4. ウィンドウの下部付近にある「環境変数」をクリックします。
      環境変数」ウィンドウが表示されます。
    5. システム変数」ペインで「パス」をクリックし、「編集」をクリックします。
    6. 「新規」をクリックします。Terraform実行可能ファイルが格納されているフォルダへのパスを追加します。
    7. OK」をクリックして変更を保存し、「OK」をクリックして「環境変数」ウィンドウを終了します。もう一度「OK」をクリックすると、「システム・プロパティ」ウィンドウが終了します。
  5. インストールを確認してバージョンを確認するには、Windows PowerShellを起動してterraform -versionと入力します。
    出力にTerraformバージョンが表示されます。例: Terraform v0.11.8

Terraformモジュールのダウンロード

Terraformを使用したOracle Cloud Infrastructureでのインフラストラクチャ・コンポーネントの作成を開始するには、Terraformモジュールをダウンロードしてください。

  1. GitまたはWebブラウザを使用して、ローカル・システムでTerraformモジュールのクローンを作成またはダウンロードします。Gitリポジトリへのリンクについては、左側のナビゲーションで「コードのダウンロード」をクリックします。
  2. Terraformモジュールを解凍するか、ローカル・システムの任意のフォルダに抽出します。
  3. Windows PowerShellを起動し、Terraformモジュールがあるフォルダにナビゲートします。terraform initと入力します。これにより、TerraformのOracle Cloud Infrastructureプロバイダもダウンロードされます。
    Terraformは、OCIプロバイダ・プラグインとともにモジュールを初期化します。初期化が完了すると、メッセージTerraform has been successfully initialized!が表示されます。

BastionホストにアクセスするためのSSH鍵ペアの生成

SSH鍵ペアを使用すると、パブリック・サブネットに作成されたインスタンスに安全にアクセスできるようになります。ローカル・ホストにSSH鍵ペアを生成します。そのあと、TerraformモジュールはSSH公開鍵をベース・ホストに追加します。ベース・ホストにパブリック・インターネットを介して接続する必要がある場合は、アクセスを認証するためのSSH秘密鍵を提供します。

PuTTYgenを使用してSSH鍵ペアを生成できます。SSH鍵にパスフレーズを設定しないでください。

  1. PuTTYgenを起動します。
  2. SSH-2 RSAのデフォルトの鍵タイプを受け入れ、まだ設定されていない場合は、生成される鍵のビット数を2048に設定します。
  3. 生成」をクリックして、ランダムな状態を生成するために、空白領域の周囲にマウスを移動します。
    キーが生成され、その値がOpenSSH authorized_keysファイルに貼り付けるための「公開」キーの下に表示されます。
  4. 「秘密鍵の保存」をクリックします。パスフレーズなしで鍵を保存するかどうかを確認するよう求められます。「はい」をクリックします。このキーは任意の場所に保存できますが、簡略化のために、Terraformモジュールが配置されているのと同じフォルダに保存してください。
  5. 次に、公開鍵を保存するには、「公開鍵」で表示される生成されたすべての鍵を選択してOpenSSH authorized_keysファイル・フィールドに貼り付け、コピーしてテキスト・ファイルに貼り付けます。このファイルを秘密鍵と同じ場所に保存します。「公開鍵の保存」ボタンはOpenSSH形式で保存しないため、使用しないでください。
これでSSH鍵ペアが生成され、ローカル・システムに格納されました。この鍵ペアが格納されている場所をメモしておいてください。

他のインスタンスにアクセスするためのSSH鍵ペアの生成

バックエンド・ホストは、パブリックIPアドレスを持たない他のインスタンスへのSSH転送を可能にし、パブリック・インターネットを介したアクセスを許可しないようにするために使用されます。ベース・ホストから他のインスタンスに安全にアクセスするには、リモート・サブネット内のインスタンスに格納されている公開鍵がローカル・マシンに格納されている秘密鍵と一致するSSH鍵ペアを使用します。

Bastionホストから他のインスタンスへのアクセスを有効にするために使用するSSHキー・ペアは、OpenSSLやssh-keygen.などのユーティリティを使用して生成する必要があります。PuTTYで使用する.ppk形式はOracle Linuxや他のUNIXに類似したオペレーティング・システムではサポートされていないため、PuTTYを使用してWindowsで生成されたSSHキー・ペアは使用できません。SSHトラフィックを他のインスタンスに転送するベース・ホストでは、Oracle Linuxイメージを使用することに注意してください。

  1. Git Bashを開始します。
  2. 入力: ssh-keygen -t rsa -N "" -b 2048 -C "<key_name>" -f <path/root_name>
    コマンドの説明は次のとおりです。
    • -t rsaは、RSAアルゴリズムを使用して鍵を生成することを指定します。

    • -N ""は、このキーに関連付けるパスフレーズを指定します。引用符の間には何も入力しないでください。鍵はパスフレーズなしで作成されます。

    • -b 2048は、2048ビット・キーを生成することを指定します。これがデフォルト値であり、最小推奨値でもあります。

    • -C "<key_name>"は、この鍵ペアの名前を指定します。

    • -f <path/root_name>は、鍵が保存される場所と、公開鍵および秘密鍵のルート名を指定します。公開鍵の末尾には、ルート名に.pubが付加されます。

SSH鍵ペアが生成され、指定した場所に保存されます。この場所を書き留めておきます。

API署名キーの生成

Oracle Cloud InfrastructureでTerraformスクリプトを認証するには、「プライバシ拡張メール(PEM)」形式でRSAキー・ペアを指定する必要があります。このAPI署名キーは、インスタンスへのアクセスに使用するSSH鍵ペアとは異なります。この鍵ペアは、Git BashでOpenSSLを使用して生成できます。ローカル・システムにGit Bashがすでにインストールされている必要があります。

  1. Git Bashを開始します。
  2. PEMキーを格納するための非表示のフォルダを作成します。PEMキーは任意の場所に格納できますが、簡略化のために、Terraformモジュールがあるフォルダの下にこのフォルダを作成します。鍵ペアを格納する場所を書き留めておいてください。その場所に移動し、mkdir ./.ociと入力します。
  3. API署名キーを作成するには、次のように入力します。openssl genrsa -out ./.oci/key_name.pem 2048
  4. 秘密鍵のアクセス権を変更して、ユーザーのみが秘密鍵を読み取ることができるようにします。入力: chmod go-rwx ./.oci/key_name.pem
  5. 次に、指定した秘密鍵の公開鍵を生成するために、openssl rsa -pubout -in ./.oci/key_name.pem -out ./.oci/key_name_public.pemと入力します。
公開および非公開のAPI署名キーは、指定したフォルダに格納されます。

コンソールを使用してAPI署名鍵をアップロードします

API署名キーを生成した後、関連付けられているユーザーの公開鍵をOracle Cloud Infrastructureにアップロードする必要があります。初めてAPI署名キーをアップロードする際には、コンソールを使用する必要があります。その後、APIを使用してAPIキーをアップロードすることもできます。

  1. Oracle Cloud Infrastructureコンソールにサインインします。
  2. アイデンティティ」をクリックし、「ユーザー」をクリックします。
  3. API署名キーを追加するユーザーをクリックします。
  4. 「ユーザーの詳細」ページで、「公開鍵の追加」をクリックします。
  5. ローカル・システムでGit Bashを起動します。API署名鍵ペアを格納したフォルダに移動します。
  6. 公開鍵をコピーするには、次のように入力します。cat ./key_name_public.pem.公開鍵の値が表示されます。行-----BEGIN PUBLIC KEY-----および-----END PUBLIC KEY-----.を含む、この値をコピーします。
  7. コンソールで公開鍵の値を貼り付けて、「追加」をクリックします。

環境変数の設定

ここで提供されるTerraformモジュールを使用すると、テキスト・ファイルで必要な値を指定して環境変数を設定できます。この場合、ファイルを単にソースにして、必要なすべての環境変数が適切に設定されていることを確認できます。

開始する前に、Oracle Cloud Infrastructureコンソールにログインします。コンソールを使用して次の情報を検索します。

  • Tenancy Oracle Cloud Infrastructure ID (OCID)

  • ユーザーOCID

  • 使用するAPI署名キーのフィンガープリント

  • リージョン

  • コンパートメントOCID

また、API署名キーおよびSSH鍵のペアがローカル・システムに格納されている場所も確認してください。

  1. ローカル・システムで、Terraformモジュールが存在するディレクトリにナビゲートします。
  2. テキスト・エディタでファイルenv-vars.ps1を開きます。
  3. env-varsファイルには複数のセクションがあります。「認証の詳細」セクションから始めます。
    1. Tenancy OCIDを入力します。Tenancy OCIDは、Oracle Cloud Infrastructureコンソールの下部にあります。これは、ocid1.tenancy.oc1..aaaaa...のような文字列です。この値をenv-varsファイルに貼り付けます。
    2. ユーザーOCIDを入力します。ユーザーOCIDを検索するには、Oracle Cloud Infrastructureコンソールで、「アイデンティティ」をクリックし、「ユーザー」をクリックします。ユーザーOCIDとともに、ユーザーのリストが表示されます。ユーザー名の下にある「コピー」をクリックして、必要なユーザーOCIDをコピーします。この値をenv-varsファイルに貼り付けます。
    3. API署名キー・フィンガープリントを入力します。Oracle Cloud Infrastructureコンソールの「ユーザー」ページで、ユーザーをクリックするとユーザーの詳細ページが表示されます。「APIキー」セクションにリストされているキーからAPIキー ・フィンガープリントをコピーします。この値をenv-varsファイルに貼り付けます。
    4. ローカル・システム上のAPI秘密鍵の完全なパスとファイル名を入力します。
  4. env-varsファイルのリージョン・セクションで、インフラストラクチャ・コンポーネントを作成するリージョンを入力します。現在表示しているリージョンがOracle Cloud Infrastructureコンソールの上部に表示されます。コンソールを使用して、アクセス権がある他のリージョンを検索することもできます。
  5. env-varsファイルの区分セクションで、インフラストラクチャ・コンポーネントを作成する区分のcompartment OCIDを入力します。前に指定したユーザーが、ここで指定する区分に必要な権限を持つグループに属していることを確認してください。コンパートメントOCIDを検索するには、Oracle Cloud Infrastructureコンソールに移動します。「アイデンティティ」をクリックし、「区分」をクリックします。コンパートメントOCIDとともに、区分のリストが表示されます。区分名の下の「コピー」をクリックして、必要な区分OCIDをコピーします。この値をenv-varsファイルに貼り付けます。
  6. env-varsファイルの「公開鍵」および「秘密鍵」セクションに、SSH公開鍵の完全なパスとファイル名、およびローカルシステムのSSH秘密鍵を入力します。ベース・ホストで使用するように指定する公開鍵と秘密鍵は、PuTTYで作成した鍵のペアであり、他のインスタンスで使用するために指定する鍵は、ssh-keygen.を使用して作成した鍵のペアであることを確認します。
  7. すべての値を正しく入力していることを確認してください。値を省略した場合、Terraformの実行時に入力を求めるプロンプトが表示されます。正しくない値を指定すると、Terraformがエラー・アウトします。すべての値が正しいことを確認したら、env-varsファイルを保存して閉じます。
  8. env-varsファイルに指定された環境変数を設定するには、Windows PowerShellを起動して、Terraformモジュールがあるフォルダにナビゲートし、env-vars.ps1と入力します。
    これによってenv-vars.ps1ファイルが実行され、現在のセッションについて、このファイルで指定したすべての変数が設定されます。
  9. 環境変数が設定されていることを確認するには、dir env:と入力します。
    ここにはすべての環境変数がリストされます。TF_VAR変数を表示して、それらの値が予想どおりに設定されているかどうかを検証できます。

地形構成の検証

必要な環境変数をすべて設定したら、Terraformを実行する準備ができていることを確認します。

  • Windows PowerShellを起動し、Terraformモジュールがあるフォルダにナビゲートします。入力: terraform plan
    このコマンドの出力は、現在のディレクトリにあるすべてのモジュールのすべての構成について実行計画を示します。この出力には、現在のインフラストラクチャを構成に合せて変更するためにTerraformに実行されるアクションが記述されます。現在作成されているコンポーネントがない場合、terraform applyを実行すると作成されるコンポーネントのリストが出力に表示されます。このコマンドではコンポーネントが作成されないため、構成が成功し、必要な認証値がすべて適切な環境変数に正しく格納されていることを確認するのみで、安全に実行されます。