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

Terraform でスクリプトを実行する

CelerData は、Terraform を介してスクリプトの実行をサポートしています。

また、OpenAPI を使用してクラスター用の実行可能なスクリプトを宣言することもできます。詳細については、 Declare scripts for a cluster を参照してください。

リクエストパラメータ

パラメータタイプ説明
cluster_idSTRINGCelerData クラスターの ID。
run_scripts_parallelBOOLEANスクリプトを並行して実行するかどうか。 有効な値: truefalse。 デフォルト値: false
scriptsARRAY実行するスクリプトのリスト。 最大 20 個のスクリプトを指定できます。
scripts.script_pathSTRING実行するスクリプトの S3 URI。 S3 URI は次の形式のいずれかです:
  • s3://<bucket_name>/<folder_name>/xxx.sh: CelerData クラスターがデプロイされる EC2 インスタンスに関連付けられたインスタンスプロファイルに移動し、指定されたバケットの読み取り権限を設定する必要があります。
  • s3a://<bucket_name>/<folder_name>/xxx.sh: CelerData クラスターがデプロイされる EC2 インスタンスに関連付けられたインスタンスプロファイルに移動し、指定されたバケットの読み取り権限を設定する必要があります。
  • /<folder_name>/xxx.sh: スクリプトがクラスターのデプロイに使用するバケットに保存されている場合、この形式を使用できます。
scripts.logs_dirSTRINGスクリプト実行結果が保存されるパス。 パスは次の形式のいずれかです:
  • s3://<bucket_name>/<folder_name>/: CelerData クラスターがデプロイされる EC2 インスタンスに関連付けられたインスタンスプロファイルに移動し、指定されたバケットの読み取りおよび書き込み権限を設定する必要があります。
  • s3a://<bucket_name>/<folder_name>/: CelerData クラスターがデプロイされる EC2 インスタンスに関連付けられたインスタンスプロファイルに移動し、指定されたバケットの読み取りおよび書き込み権限を設定する必要があります。
  • /<folder_name>/: スクリプト実行結果をクラスターのデプロイに使用するバケットに保存したい場合、この形式を使用できます。

次の点に注意してください:

  • すべてのスクリプトはデフォルトユーザーによって実行されます。 root ユーザーの権限を適用したい場合は、Sudo を使用してください。
  • 指定されたすべてのスクリプトの実行に許可される最大時間は 5 分です。
  • 一度に最大 20 個のスクリプトを実行できます。
  • 異常に実行されるスクリプトはクラスターのデプロイに失敗を引き起こします。したがって、指定されたスクリプトが正常に実行できることを確認してください。
  • CelerData クラスターがデプロイされるすべての EC2 インスタンスに関連付けられたインスタンスプロファイルが、スクリプトおよびログファイルで指定されたバケットおよびキーに対して必要な読み取りまたは書き込み権限を持っていることを確認してください。
  • リクエストパラメータ scripts で指定されたスクリプトのリストは異なるパスに配置でき、スクリプト実行時に生成されるログファイルはスクリプトのパスに類似したパスに保存されます。
  • 各スクリプトの実行により、xxx-stderr.log および xxx-stdout.log の 2 つのログファイルが生成されます。

スクリプトの実行

すべてのスクリプトは、実行プロセス中に次の環境変数を使用できます:

環境 変数説明
CELERDATA_CLUSTER_IDCelerData クラスターの ID。
CELERDATA_CLUSTER_NAMECelerData クラスターの名前。
CELERDATA_ACCOUNT_IDCelerData クラウドアカウントの ID。
STARROCKS_INSTANCE_TYPEEC2 インスタンスで実行される StarRocks プロセス。 有効な値: FEBE
STARROCKS_INSTANCE_CONF_PATHEC2 インスタンスで実行される StarRocks プロセスの設定ファイルの保存パス: /xxx/xxx/fe/conf/fe.conf または /xxx/xxx/be/conf/be.conf

クラスター展開のための初期化スクリプト

リクエストパラメータ scripts で指定されたスクリプトのリストは、EC2 インスタンスが起動した後、クラスター展開の開始時と終了時にそれぞれ実行されます。

  1. クラスター展開の開始時:

    1. すべてのスクリプトは source コマンドによって一度実行されます。

    2. 各スクリプトで on_deployment_started メソッドが呼び出されます。このメソッドがスクリプトに存在しない場合、スクリプトはデフォルトで正常に実行されたと見なされます。

    3. 各スクリプトのログファイルが生成され、次のパスに保存されます:

      • <s3_logs_dir>/<cluster_name>-<cluster_id>/<host_ip>/on-deployment-started/<script_path>-<run_timestamp_ms>-stdout.log
      • <s3_logs_dir>/<cluster_name>-<cluster_id>/<host_ip>/on-deployment-started/<script_path>-<run_timestamp_ms>-stderr.log
  2. クラスター展開の終了時:

    1. すべてのスクリプトは source コマンドによって一度実行されます。

    2. 各スクリプトで on_deployment_completed メソッドが呼び出されます。このメソッドがスクリプトに存在しない場合、スクリプトの実行結果は前のステップで source コマンドによって返された結果に依存します。

    3. 各スクリプトのログファイルが生成され、次のパスに保存されます:

      • <s3_logs_dir>/<cluster_name>-<cluster_id>/<host_ip>/on-deployment-completed/<script_path>-<run_timestamp_ms>-stdout.log
      • <s3_logs_dir>/<cluster_name>-<cluster_id>/<host_ip>/on-deployment-completed/<script_path>-<run_timestamp_ms>-stderr.log

一度限りの実行のためのアドホックスクリプト

リクエストパラメータ scripts で指定されたスクリプトのリストは、API コールによって実行されます。

  1. 各スクリプトは /bin/bash を介して実行されます。

  2. 各スクリプトのログファイルが生成され、次のパスに保存されます:

    • <s3_logs_dir>/<cluster_name>-<cluster_id>/<host_ip>/<script_path>-<run_timestamp_ms>-stdout.log
    • <s3_logs_dir>/<cluster_name>-<cluster_id>/<host_ip>/<script_path>-<run_timestamp_ms>-stderr.log