IBM Cloud Docs
リポジトリでTerraformテンプレートとモジュールを使う

リポジトリでTerraformテンプレートとモジュールを使う

SchematicsとTerraformは、様々なリポジトリタイプからのTerraformテンプレートとモジュールのダウンロードをサポートしています:Terraform Registry、GitHub, GitLab, S3/COS バケット、IBM カタログ、Artifactory などです。 Terraform 資料の Module Sources を参照してください。

Schematicsを使用する場合、Terraform 計画または適用操作を実行する前の Terraform テンプレートおよびモジュールのダウンロードは、2 つのステップからなるプロセスです。 ワークスペースの作成時に、 Schematics は、テンプレートを含むリポジトリーと、サブフォルダー内の組み込みモジュールのみを複製します。 モジュールの source パラメーターを使用して参照されるモジュールは、ワークスペースの作成時にダウンロードされません。 プライベート・リポジトリー内のテンプレート/構成にアクセスするための資格情報は、ワークスペースの作成時に Schematics に渡す必要があります。

source パラメーターで参照されるモジュールは、計画または適用操作の terraform init フェーズ中にダウンロードされます。 terraform init コマンドは、テンプレート・ファイルを解析し、 source フィールドによって参照されるリポジトリーからモジュールをダウンロードします。 プライベート・リポジトリーにあるモジュールでは、追加の資格情報を Terraform に渡す必要があります。 これらの資格情報は、 Schematicsで使用される資格情報とは別に定義され、渡されます。

プライベート Git リポジトリー、 IBM Cloud カタログ、またはその他のリポジトリーからモジュールをダウンロードするために、Terraform は、必要なアクセス ID とトークンを渡すための netrc 構成の使用をサポートしています。

サポートされる Git リポジトリー
リポジトリー
テンプレート
パブリック・リポジトリー
テンプレート
非公開リポジトリ
モジュール
パブリックリポジトリ
モジュール
プライベートリポジトリ
コメント
GitHub ある Git トークン-1 ある Git トークン-2
GitLab ある Git トークン-1 ある Git トークン-2
IBM GitLab ある Git トークン-1 ある Git トークン-2
Terraform.io いいえ いいえ ある NA
  1. ワークスペース作成時に定義Git トークン。
  2. netrc を使用して定義Git トークン。

Schematicsを使用する場合、 __netrc__ 環境変数を使用して、渡される資格情報に対してモジュール資格情報の netrc サポートを構成できます。 __netrc__ 環境変数は、 hostnameusername 、および password 引数のリストを受け入れます。 環境変数の設定は、 Schematics コマンド行 および APIs を使用する場合にのみサポートされます。 構文は、JSON ペイロード・ファイル内の env_values パラメーターを使用して提供されます。

__netrc__ は、hostnameusername、および password 引数の順序を、構文にリストされている順序と同じだと期待しています。

__netrc__ のリストを使用した env_values の構文:

"env_values":[
            {
               "__netrc__":"[['example.com', 'user1', 'pass1']['example1.com', 'user2' , 'pass2']]"
            }
         ]

テンプレートでのプライベート・モジュールの使用

Schematics は、JSON ファイルで構成された env_values に基づいて .netrc ファイルを内部で作成します。 以下は、コマンドラインとAPIを通じて、 Schematics ワークスペースを作成し、適用するための、すべてのファイルをクローンするための構文とサンプル testexample.json サンプルファイルです。

説明付きの構文:

{
  "name": "<workspace_name>",
  "shared_data": {
    "region": "<region_name>"
  },
  "type": [
    "<terraform_version>"
  ],
  "description": "<description of the workspace>",
  "template_repo": {
    "url": "<your Git repository with the module>"
  },
  "template_data": [
    {
      "folder": ".",
      "type": "<terraform_version>",
      "env_values": [
        {
          "__netrc__":"[['<git repository>','<git username>','<git_password>']]"
        }
      ]
    }
  ]
}

ペイロードが netrctestexample.json の例

{
  "name": "testnetrcworkspaceexample",
  "shared_data": {
    "region": "us-south"
  },
  "type": [
    "terraform_v1.4"
  ],
  "description": "terraform workspace",
  "template_repo": {
    "url": "https://github.com/xxxx/test-template-private-module"
  },
  "template_data": [
    {
      "folder": ".",
      "type": "terraform_v1.4",
      "env_values": [
        {
          "__netrc__":"[['github.com','testuser','ghp_x0000000xxxxxxxx000000efZxxxxxxxV']]"
        }
      ]
    }
  ]
}

ワークスペースを作成する例

ibmcloud schematics workspace new --file testexample.json

ibmcloud schematics workspace get --id WORKSPACE_ID コマンドを実行してワークスペースの作成が成功したことを分析するか、ユーザー・インターフェースを使用して、モジュールからのすべてのファイルがプロビジョンするためにワークスペースで複製され、使用されたことを表示します。