インフラストラクチャの説明
このトピックでは、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
: クラスターを作成する際、作成するクラスターのステータスを宣言する必要があります。クラスターの状態はSuspended
とRunning
に分類されます。プロビジョニング後にクラスターを開始したい場合は、この引数をRunning
に設定します。そうしない場合、クラスターはプロビジョニング後にサスペンドされます。 -
csp
: クラスターのクラウドサービスプロバイダー。この引数をaws
に設定します。 -
region
: クラスターをホストする AWS VPC が属する AWS リージョンの ID。サポートされているクラウドプラットフォームとリージョン を参照してください。
オプション:
fe_node_count
: クラスター内の FE ノードの数。許可される値:1
、3
、5
。デフォルト値: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 scripts のscripts.logs_dir
とscripts.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
: スクリプトを並行して実行するかどうか。許可される値:true
とfalse
。デフォルト値:false
。query_port
: クエリポートは、1-65535 の範囲内で 443 を除く必要があります。デフォルトのクエリポートは 9030 です。この引数はクラスターのデプロイ時にのみ指定でき、一度設定すると変更できません。idle_suspend_interval
: クラスターがアイドル状態でいられる時間(分単位)。指定された時間が経過すると、クラスターは自動的にサスペンドされます。自動サスペンド機能はデフォルトで無効です。この機能を有効にするには、この引数を 60-999999 の範囲の整数に設定します。この機能を再度無効にするには、この引数を Terraform 構成から削除します。