Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Snowake DCRをTerraformで構築したお話/Snowake DCRの未来

Snowake DCRをTerraformで構築したお話/Snowake DCRの未来

Makoto Shinohara

August 30, 2023
Tweet

More Decks by Makoto Shinohara

Other Decks in Programming

Transcript

  1. 今日のお品書き 1. 自己紹介 2. Snowflake DCRをTerrafomで構築したお話 3. Snowflake DCRの未来 KDDI

    Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 1
  2. Snowflake DCRの構築プロセス Provider Snowflake Account Consumer Snowflake Account 1. provider_init:Provider

    の初期準備 3. provider_enable_consumer:Provider でConsumer の有効化 2. consumer_init:Consumer の初期準備 ProviderとConsumerの依存関係 KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 5
  3. Snowflake DCRの構築プロセス 相互にシェアオブジェクトを作成するため、ProviderとConsumerの依存関係がある 構築プロセスのまとまりごとにModule化することで一気に作成できるように ProviderとConsumerの逆転も簡単にできるように 1 module "provider_init" { 2

    source = "modules/provider_init" 3 ... 4 } 5 module "consumer_init" { 6 source = "modules/consumer_init" 7 ... 8 depends_on = [ 9 module.provider_init 10 ] 11 } 12 module "provider_enable_consumer" { 13 source = "modules/provider_enable_consumer" 14 ... 15 depends_on = [ 16 module.provider_init, 17 module.consumer_init 18 ] 19 } KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 6
  4. DDL → HCL2への変換 Step 1. DDLに対応するResourceを探す System Message Prompt Here

    is a list of resources for the Snowflake Terraform pro snowflake_account snowflake_account_grant snowflake_account_parameter snowflake_api_integration snowflake_database ...snowflake 関連のresource を列挙 What terraform resource does the following SQL correspond t Please only provide the corresponding resource. "create or replace schema admin;" Answer snowflake_schema KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 9
  5. DDL → HCL2への変換 Step 2. 見つけたResourceのDocumentページからExample UsageとSchemaを取得 1 pattern =

    r"snowflake_([a-zA-Z_]+)" 2 3 result = re.search(pattern, ans.content) 4 if result: 5 resource = result.group(1) 6 else: 7 print("Could not find the resource.") 8 exit() 9 response = requests.get( 10 f"https://raw.githubusercontent.com/Snowflake-Labs/terraform-provider-snowflake/main/docs/resources/{resource} 11 12 example = re.search(r"```terraform(.+})\n```", 13 response.text, flags=re.DOTALL) 14 schema = re.search(r"(## Schema.+)## Import", 15 response.text, flags=re.DOTALL) KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 10
  6. DDL → HCL2への変換 Step 3. Example UsageとSchemaをPromptに加えてIn Context Learningさせて回答を得る Prompt

    Convert the following Snowflake {ddl} to Terraform HCL2. Here is the schema: {schema}. Also, here is an example of the HCL2: {example}. Answer Here is the Terraform HCL2 code to create or replace a Snow resource "snowflake_schema" "schema" { database = "database" name = "admin" comment = "A schema." is_transient = false is_managed = false data_retention_days = 1 tag { name = "department" value = "marketing_info" } } Please note that you need to replace `"database"` with the KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 11