プライベート・レジストリーを使用するための Schematics エージェントの構成

エージェントは、 Schematics Terraform ジョブで、プライベート Terraform レジストリーをソースとするカスタム Terraform プロバイダーの使用をサポートします。 カスタム・プロバイダーを使用するためのサポートは、共有マルチテナント Schematics サービスでは使用できません。 これはエージェントでのみ使用可能です。 エージェントには、ローカルまたはプライベートのプロバイダー・レジストリーは含まれません。 さらに、ユーザーは、エージェントからアクセス可能なプライベート・ネットワーク上でレジストリーを構成できます。

デフォルトでは、 Schematics ジョブが実行されると、Terraform CLI は、必要な Terraform プロバイダー・プラグインまたは Terraform モジュールをパブリック Terraform レジストリーからインターネットまたはパブリック・ネットワークを介してダウンロードします。 エージェントがプライベート・ネットワークにデプロイされている場合、セキュリティー・ポリシーは、プロキシーまたはミラー・サイトを使用してプロバイダー・プラグインをダウンロードおよびキャッシングする必要があることを指示します。 さらに、カスタム開発された Terraform プロバイダーをプライベート・レジストリーでホストして、環境固有のリソースを構成することが必要になる場合もあります。

これらのユース・ケースでは、Terraform CLI 構成の provider_installation ブロックを使用して、代替プロバイダー・レジストリーからのプロバイダーのダウンロードを構成できます。 これにより、Terraform のデフォルトのインストール動作をカスタマイズできます。 プロバイダーのダウンロードの構成について詳しくは、 プロバイダーのインストール に関する Terraform 資料を参照してください。

エージェントでは、以下の 2 つのワークスペース環境変数を使用して、代替リポジトリーを参照し、このレジストリーから名前と名前空間でプロバイダーを選択するように Terraform CLI を構成できます。

  • カスタム Terraform プロバイダーがホストされている TF_NETWORK_MIRROR_URL Terraform プライベート・リポジトリー、Web サイト、または Artifactory インスタンス。
  • カスタム・ロケーションからダウンロードされるプロバイダーの TF_NETWORK_MIRROR_PROVIDER_NAME の名前と名前空間。 プロバイダーの命名と名前空間については、Terraform の資料を参照してください。 指定しない場合、デフォルトで、プライベート・レジストリーからダウンロードされるすべての名前空間 "*/*" 内のすべてのプロバイダーになります。

Schematics は、以下の Terraform CLI 構成ファイル・パラメーターを自動生成します。 ジョブの実行中に、Terraform は、使用するいくつかのカスタム・プロバイダーにプライベート・レジストリーを使用することも、すべてのプロバイダーにプライベート・レジストリーを使用することもできます。

provider_installation {
network_mirror {
url = "${TF_NETWORK_MIRROR_URL}"
include = ["${TF_NETWORK_MIRROR_PROVIDER_NAME}"]
}
direct {
exclude = ["TF_NETWORK_MIRROR_PROVIDER_NAME"]
}
}

プライベート・プロバイダー・レジストリーにアクセスするための資格情報の設定

プライベート・レジストリーの場合、ターゲット・レジストリーのアクセス・トークンを使用して Terraform を構成する必要があります。 エージェントでは、これらは TF_TOKEN_ 環境変数を使用してワークスペース・レベルで定義されます。 資格情報トークンの受け渡しの構成について詳しくは、Terraform の 環境変数資格情報 の資料を参照してください。

プロバイダー・レジストリーとしての Artifactory の使用

Artifactory は、Terraform プロバイダーをソーシングするための代替ソリューションを提供し、 Terraform プロバイダー・レジストリー・プロトコルを完全にサポートします。 これは、最初の 2 つのタイプを定義済みの検索順序で集約する、リモート・リポジトリー、ローカル・リポジトリー、および仮想リポジトリーをサポートします。

ローカル・リポジトリーは、ユーザーが管理する物理的なローカル・リポジトリーです。 リポジトリーは Terraform プライベート・レジストリーとして機能します。このレジストリーでは、カスタム開発されたプロバイダーをホストし、パブリック・プロバイダーを手動でアップロードして保存することで、パブリック・ネットワーク・アクセスの必要性をなくすことができます。 または、Terraform ユーザーが使用できるようにするパブリック・プロバイダーを制限します。

リモート・リポジトリーは、プライベート Terraform レジストリーとパブリック Terraform レジストリーの両方のキャッシング・プロキシーとして機能できます。 リモート・リポジトリーを実装するには、パブリック・インターネット・アクセスが必要です。 ここでは、パブリック・ネットワーク・アクセスは Terraform ではなく、 Artifactory を介して行われます。 通常、多くの組織には既存の Artifactory インストール済み環境があり、 Artifactoryを介したセキュアなパブリック・アクセスを可能にするために、ネットワーク・モニターおよびネットワーク・アクセス・ルールが設定されています。

ローカル・リポジトリーとリモート・プロキシー・リポジトリーを組み合わせた仮想 Terraform リポジトリーを使用すると、任意の追加のパブリック Terraform プロバイダーへのセキュア・アクセスとともに、カスタム・プロバイダーをローカルでホストすることができます。

ローカル Artifactory プロバイダー・レジストリーの構成

ローカルの Artifactory レジストリーを使用して、ユーザーのプライベート・ネットワーク上のエージェントで使用するカスタム開発プロバイダーをホストすることができます。 Artifactory アクセスは、以下のワークスペース環境変数を使用して構成され、ローカル・リポジトリーを参照し、このレジストリーから名前と名前空間でプロバイダーを選択するように Terraform CLI を構成します。

TF_TOKEN_name.artifactory.user.com:<artifactory_local_registry_token> TF_NETWORK_MIRROR_PROVIDER_NAME:"user_namespace/provider_name" TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-virtual/providers/

ArtifactoryとUIを参照し、ローカルURL と無記名トークンの値を取得します。

以下の例は、 Schematics が Terraform CLI 構成を生成することを示しています。

provider_installation {
                network_mirror {
                        url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-local/providers/"
                        include = ["user_namespace/provider_name"]
                }
                direct {
                        exclude = ["user_namespace/provider_name"]
                }
}  

リモート Artifactory プロバイダー・レジストリーの構成

リモートの Artifactory レジストリーを使用すると、Terraform パブリック・ネットワーク・アクセスを提供せずに、Terraform で使用するパブリック・プロバイダーをキャッシュに入れることができます。 Artifactory アクセスは、以下のワークスペース環境変数を使用して構成され、リモート・リポジトリーを参照し、このプロキシー・レジストリーを使用してすべてのプロバイダーを取得するように Terraform CLI を構成します。

TF_TOKEN_name.artifactory.user.com:<artifactory_remote_registry_token> TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-remote/providers/

ArtifactoryとUIを参照し、リモートURL と無記名トークンの値を取得します。

以下の例は、 Schematics が Terraform CLI 構成を生成することを示しています。

provider_installation {
                network_mirror {
                        url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-remote/providers/"
                        include = ["*/*"]
                }
                direct {
                        exclude = ["*/*"]
                }
        }

仮想 Artifactory プロバイダー・レジストリーの構成

仮想 Artifactory レジストリーを使用して、Terraform で使用するために、カスタム・プロバイダーのホスティングとパブリック・プロバイダーのキャッシングを組み合わせることができます。 Artifactory アクセスは、以下のワークスペース環境変数を使用して構成され、仮想リポジトリーを参照し、このプロキシー・レジストリーを使用してすべてのプロバイダーを取得するように Terraform CLI を構成します。

TF_TOKEN_name.artifactory.user.com:<artifactory_virtual_registry_token> TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com>/artifactory/api/terraform/<user-terraform-virtual/providers/

ArtifactoryとUIを参照して、仮想URL と無記名トークンの値を取得します。 仮想リポジトリーは、前のセクションで説明したように、ローカル・レジストリーとリモート・レジストリーの集合として構成する必要があります。

以下の例は、 Schematics が Terraform CLI 構成を生成することを示しています。

provider_installation {
                network_mirror {
                        url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-virtual/providers/"
                        include = ["*/*"]
                }
                direct {
                        exclude = ["*/*"]
                }
        }