Terraform Airbyte Provider | Terraformのimport block機能を使ってGUIで設定した内容をコード化できるか?

背景

  • AirbyteをGUIから設定して、その設定内容をTerraformのコードに変換したい
  • Terraformのimport block機能を使えば既存のリソースや設定内容をtfstateファイルに生成してくれる
  • Terraform Airbyte Providerでも過不足なく設定内容をimportできるか試した
  • しっかり動いて頼れる機能であれば「GUIで設定 –> Terraformのコードに変換–> Airbyteのコード管理」でみんなハッピー

結果

tfstateにリソースが追加されたが、AirbyteのGUIから設定した内容が正しく反映されておらず、使用を見送った

作業

空のAirbyte リソースを作成

今回はairbyte_destination_s3(S3への出力設定)で検証する

resource "airbyte_destination_s3" "example2" {    
}

GUIからS3への出力設定を追加

bucket名や出力先path、ファイル形式などを設定した

GUIからdefinition_idを取得

definition_idをURLから取得

import blockを実行

terraform実行環境にてimportを実行

terraform import airbyte_destination_s3.example2 37df0b9f-a1b3-44c6-9b94-e8c88542a6b2

処理は正常終了した

生成されたterraform.tfstateを確認

{
  "version": 4,
  "terraform_version": "1.9.3",
  "serial": 1,
  "lineage": "ad91c032-71b2-2083-2054-e03e3a1b667f",
  "outputs": {},
  "resources": [
    {
      "mode": "managed",
      "type": "airbyte_destination_s3",
      "name": "example2",
      "provider": "provider[\"registry.terraform.io/airbytehq/airbyte\"]",
      "instances": [
        {
          "schema_version": 0,
          "attributes": {
            "configuration": {
              "access_key_id": null,
              "file_name_pattern": null,
              "format": {
                "avro_apache_avro": null,
                "csv_comma_separated_values": null,
                "json_lines_newline_delimited_json": null,
                "parquet_columnar_storage": null
              },
              "s3_bucket_name": null,
              "s3_bucket_path": null,
              "s3_bucket_region": null,
              "s3_endpoint": null,
              "s3_path_format": null,
              "secret_access_key": null
            },
        ....

GUIでは出力先のbucket名や、ファイル形式をparquetで設定しているけど
ほとんどの項目がnullになっていて、正しくterraform.tfstateに反映されてない…

まとめ

Terraform のimportを使ってみたけどAirbyteの設定を正しくterraformのコードに変換できなかった

その他のsourceリソース(airbyte_source_bigquery, airbyte_source_postgres)でも試してみたけど、一部の設定は新しいリソースに反映されているけど、それ以外はnullや空の状態でした

GUIツールのコード管理…難しい
ただ開発/検証/本番環境へ同じ設定を反映できるようにしたいのに…