背景
- 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ツールのコード管理…難しい
ただ開発/検証/本番環境へ同じ設定を反映できるようにしたいのに…