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

パッチ更新でterraform initが落ちた日

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →
Avatar for gr1m0h gr1m0h
October 09, 2026

パッチ更新でterraform initが落ちた日

Avatar for gr1m0h

gr1m0h

October 09, 2026

More Decks by gr1m0h

Other Decks in Technology

Transcript

  1. Wataru Tsuda @gr1m0h SWE, SRE @ Topotal, Inc. - 複数社で

    SRE の技術⽀援に従事 - 社内の改善活動 - ⾃社サービスのQA活動 コミュニティ活動 - SRE Lounge Hiroshima - SRE Magazine - SORACOM UG Hiroshima Website: grimoh.net Fukuoka.sre #1 | gr1m0h 2
  2. 株式会社Topotal Build reliability, accelerate growth X Topotal お知らせを配信中 ENGINEERING SERVICE

    PRODUCT サービスの価値を、エンジニアリングで引き出す つらいインシデント対応を、楽に、学びに、そしてゼロに。 SRE のワークフローを軸に、信頼性と開発速度を両⽴できる状態 をつくり ます。 対応前から対応後までを⼀貫して⽀え、迅速な復旧と確かな学び を組織の 仕組みに変えます。 — 開発〜運⽤のフィードバックループを速くす 対応前 属⼈化しがちな対応を、仕組みにする — る 事業成⻑を⽀えられる運⽤の⼟台をつくる 対応中 記録ではなく、復旧に集中できる状態にする — SRE の実践をチームの中に残す 対応後 積み上がった事実から、次の改善につなげる 成果物を渡して終わりではなく、社内に SRE が根づく状態を⽬指します。 インシデント管理の SaaS として開発‧提供しています。 導⼊企業(⼀部) 導⼊企業(⼀部) SRE を⼀緒に実践する仲間を探しています jobs.topotal.com 機能詳細‧無料トライアルはこち ら waroom.com 3
  3. 事件発⽣ tfaction を上げたら terraform init が落ちた v2.0.4 → v2.0.5 $

    terraform init Error: No valid credential sources found Fukuoka.sre #1 | gr1m0h 4
  4. ⼿がかり 共通設定を anchor と merge key で取り込んでいた tfaction-root.yaml default: &default

    aws_region: ap-northeast-1 terraform_plan_config: aws_assume_role_arn: arn:aws:iam<:123456789012:role/terraform-plan target_groups: - <<: *default working_directory: aws/dev/ Fukuoka.sre #1 | gr1m0h 6
  5. 何が起きていたか 「<<」がただの⽂字列キーとして残った 継承していたリージョンと IAM ロールが⼊らないまま、処理が進む YAML パース 成功 → 設定検証

    エラーなし → AWS 認証 本来エラーが出るべき場所 スキップ → terraform init 失敗 実際に落ちた場所 Fukuoka.sre #1 | gr1m0h 7
  6. merge key の仕様 merge key は YAML 1.2 の仕様にない 2005

    YAML 1.2 YAML 1.1 向けの Working Draft として定義 仕様から削除 anchor / alias & * 今も仕様にある merge key << 解釈するかどうかはパーサ次第 yaml.org「Merge Key Language-Independent Type for YAML Version 1.1」/ YAML 1.2.2 Specification Fukuoka.sre #1 | gr1m0h 9
  7. 解決 CORE_SCHEMA に mergeTag だけを⾜す Issue #4213 で報告 → PR

    #4214 → v2.0.6 で修正 const schema = CORE_SCHEMA.withTags(mergeTag); const config = load(source, { schema }); YAML11_SCHEMAでは真偽値や数値の解釈まで変わる →変更範囲を merge key に絞った suzuki-shunsuke/tfaction Issue #4213 / PR #4214 Fukuoka.sre #1 | gr1m0h 10
  8. 学び② パッチ更新でも挙動は変わる 01 Renovate の⾃動更新は便利だが、この種の変化は防げない 02 パッチ更新でも、依存ライブラリ経由で挙動が変わることがある x.y.z 形式の OSS

    でも、SemVer のルールに従っているとは限らない 03 merge key は「読みツールが1つに固定され、 そのツールが対応している」場合だけ 使う 複数のパーサが読む YAML では避ける Fukuoka.sre #1 | gr1m0h 12
  9. References 参考⽂献 gr1m0h, tfaction v2.0.5でAWS認証が失敗した原因を調べた(はてなブログ, 2026) https://gr1m0h.hatenablog.com/entry/2026/09/25/110000 suzuki-shunsuke/tfaction Issue #4213

    https://github.com/suzuki-shunsuke/tfaction/issues/4213 suzuki-shunsuke/tfaction PR #4214 https://github.com/suzuki-shunsuke/tfaction/pull/4214 nodeca/js-yaml https://github.com/nodeca/js-yaml Merge Key Language-Independent Type for YAML Version 1.1 https://yaml.org/type/merge.html YAML Ain’t Markup Language Version 1.2.2 https://yaml.org/spec/1.2.2/ Fukuoka.sre #1 | gr1m0h 14