メインコンテンツまでスキップ

インフラストラクチャの説明

このトピックでは、AWS 上でクラシック CelerData クラスターのデプロイを自動化するサンプルインフラストラクチャ構成を提供し、CelerData Cloud BYOC プロバイダーとどのように連携できるかを理解するのに役立ちます。これには、準備を完了している ことと、プロバイダーを設定している ことを前提としています。

クラシック CelerData クラスターを作成するには、プロバイダーを設定した .tf ファイル(例:main.tf)に、構築するインフラストラクチャを表す以下のリソースを宣言する必要があります。

データクレデンシャル関連のリソース

data "celerdatabyoc_aws_data_credential_assume_policy" "assume_role" {}

resource "celerdatabyoc_aws_data_credential_policy" "role_policy" {
bucket = local.s3_bucket
}

resource "aws_iam_role" "celerdata_data_cred_role" {
name = "<celerdata_data_credential_role_name>"
assume_role_policy = data.celerdatabyoc_aws_data_credential_assume_policy.assume_role.json
description = "<celerdata_data_credential_role_description>"
inline_policy {
name = "<celerdata_data_credential_role_policy_name>"
policy = celerdatabyoc_aws_data_credential_policy.role_policy.json
}
}

resource "celerdatabyoc_aws_data_credential" "data_credential" {
name = "<celerdata_data_credential_name>"
role_arn = aws_iam_role.celerdata_data_cred_role.arn
instance_profile_arn = aws_iam_instance_profile.celerdata_data_cred_profile.arn
bucket_name = local.s3_bucket
policy_version = celerdatabyoc_aws_data_credential_policy.role_policy.version
}

celerdatabyoc_aws_data_credential_policy

このリソースには、以下の必須引数のみが含まれています。

  • bucket: (新しいリソースを強制)JSON ポリシードキュメントを生成し、クエリプロファイルを保存する AWS S3 バケットの名前。値を local.s3_bucket に設定します。バケット要素を Terraform 構成のローカル値 s3_bucket として設定することをお勧めします。ローカル値 を参照してください。

aws_iam_role (celerdata_data_cred_role)

このリソースには、以下の必須引数とオプション引数が含まれています。

必須:

  • assume_role_policy: データクレデンシャルで参照される IAM ロールを引き受ける権限をエンティティに付与するポリシー。値を data.celerdatabyoc_aws_data_credential_assume_policy.assume_role.json に設定します。

オプション:

  • name: (新しいリソースを強制)データクレデンシャルで参照される IAM ロールの名前。ユニークな名前を入力します。省略した場合、Terraform はランダムでユニークな名前を割り当てます。IAM 識別子 を参照してください。
  • description: IAM ロールの説明。
  • inline_policy: IAM ロールに関連付けられた IAM インラインポリシーの排他的なセットを定義する構成ブロック。以下を参照してください。ブロックが構成されていない場合、Terraform はこのリソース内のインラインポリシーを管理しません。空のブロック(つまり、inline_policy {})を構成すると、apply でバンド外で追加されたすべてのインラインポリシーが削除されます。
    • name: データクレデンシャルで参照される IAM ロールにアタッチされる IAM ポリシーの名前。
    • policy: データクレデンシャルで参照される IAM ロールにアタッチされる IAM ポリシー。値を celerdatabyoc_aws_data_credential_policy.role_policy.json に設定します。

celerdatabyoc_aws_data_credential

このリソースには、以下の必須引数とオプション引数が含まれています。

必須:

  • role_arn: (新しいリソースを強制)データクレデンシャルで参照される IAM ロールの ARN。値を aws_iam_role.celerdata_data_cred_role.arn に設定します。
  • instance_profile_arn: (新しいリソースを強制)データクレデンシャルで参照される IAM ロールのインスタンスプロファイル ARN。値を aws_iam_instance_profile.celerdata_data_cred_profile.arn に設定します。
  • bucket_name: (新しいリソースを強制)ポリシードキュメントを生成し、クエリプロファイルを保存する AWS S3 バケットの名前。値を local.s3_bucket に設定します。バケット要素を Terraform 構成のローカル値 s3_bucket として設定することをお勧めします。ローカル値 を参照してください。
  • policy_version: (新しいリソースを強制)ポリシーのバージョン。値を celerdatabyoc_aws_data_credential_policy.role_policy.version に設定します。

オプション:

  • name: (新しいリソースを強制)データクレデンシャルの名前。ユニークな名前を入力します。

デプロイメントクレデンシャル関連のリソース

resource "aws_iam_instance_profile" "celerdata_data_cred_profile" {
name = "<celerdata_data_credential_profile_name>"
role = aws_iam_role.celerdata_data_cred_role.name
}

resource "celerdatabyoc_aws_deployment_credential_policy" "role_policy" {
bucket = local.s3_bucket
data_role_arn = aws_iam_role.celerdata_data_cred_role.arn
}

resource "celerdatabyoc_aws_deployment_credential_assume_policy" "role_policy" {}

resource "aws_iam_role" "deploy_cred_role" {
name = "<celerdata_deployment_credential_role_name>"
assume_role_policy = celerdatabyoc_aws_deployment_credential_assume_policy.role_policy.json
description = "<celerdata_deployment_credential_role_description>"
inline_policy {
name = "<celerdata_deployment_credential_role_policy_name>"
policy = celerdatabyoc_aws_deployment_credential_policy.role_policy.json
}
}

resource "celerdatabyoc_aws_deployment_role_credential" "deployment_role_credential" {
name = "<celerdata_deployment_credential_name>"
role_arn = aws_iam_role.deploy_cred_role.arn
external_id = celerdatabyoc_aws_deployment_credential_assume_policy.role_policy.external_id
policy_version = celerdatabyoc_aws_deployment_credential_policy.role_policy.version
}

aws_iam_instance_profile

このリソースには、以下のオプション引数のみが含まれています。

  • name: (新しいリソースを強制)インスタンスプロファイルの名前。ユニークな名前を入力します。省略した場合、Terraform はランダムでユニークな名前を割り当てます。この引数は name_prefix と競合します。この引数の値は、英数字の大文字と小文字、および次の特殊文字で構成される文字列にすることができます:_+=,.@-。スペースは許可されていません。
  • role: インスタンスプロファイルに追加する IAM ロールの名前。値を aws_iam_role.celerdata_data_cred_role.name に設定します。

celerdatabyoc_aws_deployment_credential_policy

このリソースには、以下の必須引数のみが含まれています。

  • bucket: AWS S3 バケットの名前。値を local.s3_bucket に設定します。バケット要素を Terraform 構成のローカル値 s3_bucket として設定することをお勧めします。ローカル値 を参照してください。
  • data_role_arn: (新しいリソースを強制)デプロイメントクレデンシャルで参照される IAM ロールの ARN。値を aws_iam_role.celerdata_data_cred_role.arn に設定します。

aws_iam_role (deploy_cred_role)

このリソースには、以下の必須引数とオプション引数が含まれています。

必須:

  • assume_role_policy: デプロイメントクレデンシャルで参照される IAM ロールを引き受ける権限をエンティティに付与するポリシー。値を celerdatabyoc_aws_deployment_credential_assume_policy.role_policy.json に設定します。

オプション:

  • name: (新しいリソースを強制)デプロイメントクレデンシャルで参照される IAM ロールの名前。ユニークな名前を入力します。省略した場合、Terraform はランダムでユニークな名前を割り当てます。IAM 識別子 を参照してください。
  • description: IAM ロールの説明。
  • inline_policy: IAM ロールに関連付けられた IAM インラインポリシーの排他的なセットを定義する構成ブロック。以下を参照してください。ブロックが構成されていない場合、Terraform はこのリソース内のインラインポリシーを管理しません。空のブロック(つまり、inline_policy {})を構成すると、apply でバンド外で追加されたすべてのインラインポリシーが削除されます。
    • name: IAM ロールにアタッチされる IAM ポリシーの名前。
    • policy: デプロイメントクレデンシャルで参照される IAM ロールにアタッチされる IAM ポリシー。値を celerdatabyoc_aws_deployment_credential_policy.role_policy.json に設定します。

celerdatabyoc_aws_deployment_role_credential

このリソースには、以下の必須引数とオプション引数が含まれています。

必須:

  • role_arn: (新しいリソースを強制)デプロイメントクレデンシャルで参照されるクロスアカウント IAM ロールの ARN。値を aws_iam_role.deploy_cred_role.arn に設定します。
  • external_id: (新しいリソースを強制)デプロイメントクレデンシャルで参照されるクロスアカウント IAM ロールを作成するために使用される外部 ID。値を celerdatabyoc_aws_deployment_credential_assume_policy.role_policy.external_id に設定します。
  • policy_version: (新しいリソースを強制)ポリシーのバージョン。値を celerdatabyoc_aws_deployment_credential_policy.role_policy.version に設定します。

オプション:

  • name: (新しいリソースを強制)デプロイメントクレデンシャルの名前。ユニークな名前を入力します。

ネットワーク構成関連のリソース

resource "celerdatabyoc_aws_network" "network" {
name = "<VPC_name>"
subnet_id = "<subnet_id>"
security_group_id = "<security_group_id>"
region = "<AWS_VPC_region>"
deployment_credential_id = celerdatabyoc_aws_deployment_role_credential.deployment_role_credential.id
vpc_endpoint_id = "<vpc_endpoint_id>"
}

celerdatabyoc_aws_network リソースには、以下の必須引数とオプション引数が含まれています。

必須:

  • name: (新しいリソースを強制)クラスターをホストする AWS VPC の名前。ユニークな名前を入力します。

  • subnet_id: (新しいリソースを強制)AWS VPC 内のサブネットの ID。

  • security_group_id: (新しいリソースを強制)AWS VPC 内のセキュリティグループの ID。

  • region: (新しいリソースを強制)AWS VPC が属する AWS リージョンの ID。以下の AWS リージョンがサポートされています。

    リージョンリージョン ID
    アジア太平洋 (シンガポール)ap-southeast-1
    米国東部 (バージニア北部)us-east-1
    米国西部 (オレゴン)us-west-2
    ヨーロッパ (アイルランド)eu-west-1
    ヨーロッパ (フランクフルト)eu-central-1
  • deployment_credential_id: (新しいリソースを強制)デプロイメントクレデンシャルの ID。値を celerdatabyoc_aws_deployment_role_credential.deployment_role_credential.id に設定します。

オプション:

  • vpc_endpoint_id: (オプション)VPC 内のエンドポイントの ID。より厳格なネットワーク通信方法を達成する必要がある場合、この引数を設定します。

CelerData クラスター関連のリソース

resource "celerdatabyoc_classic_cluster" "demo_cluster" {
cluster_name = "<cluster_name>"
fe_instance_type = "<fe_node_instance_type>"
fe_node_count = 1
deployment_credential_id = celerdatabyoc_aws_deployment_role_credential.deployment_role_credential.id
data_credential_id = celerdatabyoc_aws_data_credential.data_credential.id
network_id = celerdatabyoc_aws_network.network.id
be_instance_type = "<be_node_instance_type>"
be_node_count = 1
be_disk_number = 2
be_disk_per_size = 100
default_admin_password = "<SQL_user_initial_password>"

expected_cluster_state = "{Suspended | Running}"
resource_tags = {
celerdata = "<tag_name>"
}
csp = "aws"
region = "<AWS_VPC_region>"

init_scripts {
logs_dir = "<log_s3_path>"
script_path = "<script_s3_path>"
}
run_scripts_parallel = false
query_port = 9030
idle_suspend_interval = 64
}

celerdatabyoc_classic_cluster リソースには、以下の必須引数とオプション引数が含まれています。

注意

Terraform を通じて AWS 上に弾力的な CelerData クラスターをデプロイするために使用されるリソースについては、celerdatabyoc_elastic_cluster を参照してください。

必須:

  • cluster_name: (新しいリソースを強制)クラスターの希望する名前。ユニークな名前を入力します。

  • fe_instance_type: クラスター内の FE ノードのインスタンスタイプ。"サポートされているインスタンスタイプ" の表から FE インスタンスタイプを選択します。例えば、この引数を m6i.4xlarge に設定できます。

  • deployment_credential_id: (新しいリソースを強制)デプロイメントクレデンシャルの ID。値を celerdatabyoc_aws_deployment_role_credential.deployment_role_credential.id に設定します。

  • data_credential_id: (新しいリソースを強制)データクレデンシャルの ID。値を celerdatabyoc_aws_data_credential.data_credential.id に設定します。

  • network_id: (新しいリソースを強制)ネットワーク構成の ID。値を celerdatabyoc_aws_network.network.id に設定します。

  • be_instance_type: クラスター内の BE ノードのインスタンスタイプ。"サポートされているインスタンスタイプ" の表から BE インスタンスタイプを選択します。例えば、この引数を m5.xlarge に設定できます。

  • default_admin_password: クラスターの admin ユーザーの初期パスワード。

  • expected_cluster_state: クラスターを作成する際、作成するクラスターのステータスを宣言する必要があります。クラスターの状態は SuspendedRunning に分類されます。プロビジョニング後にクラスターを開始したい場合は、この引数を Running に設定します。そうしない場合、クラスターはプロビジョニング後にサスペンドされます。

  • csp: クラスターのクラウドサービスプロバイダー。この引数を aws に設定します。

  • region: クラスターをホストする AWS VPC が属する AWS リージョンの ID。サポートされているクラウドプラットフォームとリージョン を参照してください。

オプション:

  • fe_node_count: クラスター内の FE ノードの数。許可される値:135。デフォルト値:1
  • be_node_count: クラスター内の BE ノードの数。許可される値:ゼロ以外の正の整数。デフォルト値:3
  • be_disk_number: (新しいリソースを強制)各 BE に許可される最大ディスク数。許可される値:[1,24]。デフォルト値:2
  • be_disk_per_size: 各 BE のディスクあたりのサイズ。単位:GB。最大値:16000。デフォルト値:100。このパラメータの値は増加のみ可能で、2 回の値変更の間隔は 6 時間以上でなければなりません。
  • resource_tags: クラスターにアタッチされるタグ。
  • init_scripts: スクリプトとスクリプト実行結果が保存されるパスを指定する構成ブロック。実行可能なスクリプトの最大数は 20 です。これらの引数でサポートされている形式については、Run scriptsscripts.logs_dirscripts.script_path を参照してください。
    • logs_dir: (新しいリソースを強制)スクリプト実行結果が保存される AWS S3 バケット内のパス。この S3 バケットは、celerdatabyoc_aws_data_credential リソースで指定する S3 バケットと同じでも異なっていてもかまいません。
    • script_path: (新しいリソースを強制)Terraform 経由で実行するスクリプトを保存する AWS S3 バケット内のパス。この S3 バケットは、celerdatabyoc_aws_data_credential リソースで指定するバケットでなければなりません。
  • run_scripts_parallel: スクリプトを並行して実行するかどうか。許可される値:truefalse。デフォルト値:false
  • query_port: クエリポートは、1-65535 の範囲内で 443 を除く必要があります。デフォルトのクエリポートは 9030 です。この引数はクラスターのデプロイ時にのみ指定でき、一度設定すると変更できません。
  • idle_suspend_interval: クラスターがアイドル状態でいられる時間(分単位)。指定された時間が経過すると、クラスターは自動的にサスペンドされます。自動サスペンド機能はデフォルトで無効です。この機能を有効にするには、この引数を 60-999999 の範囲の整数に設定します。この機能を再度無効にするには、この引数を Terraform 構成から削除します。