Skip to content

render.sh: 生成物の確かめを manifest の書き方に左右されないようにする - #786

Merged
5ym merged 1 commit into
mainfrom
render-check-form
Nov 11, 2026
Merged

5ym merged 1 commit into
mainfrom
render-check-form

Conversation

@5ym

@5ym 5ym commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator

なぜ

#778 (Talos v1.15.0-beta.0) の boot が、起動より前の bootstrap/render.sh の確かめで落ちている。

talosctl は inline の manifest を、v1.15.0-alpha.2 までは 1 行のエスケープ文字列で、beta.0 からはブロック (|-) で書き出す (生成物は 1000 行 → 9591 行)。確かめはエスケープした引用符と改行を探していたので、中身は同じなのに見つからなくなった。

何を変えたか

  • 生成物のエスケープ (改行と引用符) を戻し、字下げを落としたものを作って、それを探す。どちらの書き方でも同じ文字列で見つかる。
  • Namespace の 3 行 (kind: Namespace / metadata: / name: …) は grep では行をまたげないので、awk で 3 行が続いていることを見る。

確かめる中身は減らしていない。

確かめたこと

  • 使い捨ての設定で talosctl v1.15.0-alpha.2 と beta.0 の gen config を回し、前者がエスケープ文字列、後者がブロックになることを再現した。
  • 直した確かめの部分を両方の出力に当てて、gawk と mawk (tools の像は mawk) のどちらでも通ること、無い Namespace は見つからないことを見た。
  • この PR の boot は alpha.2 (古い書き方) で回る。マージ後に chore(deps): update talos to v1.15.0-beta.0 #778 が beta.0 (新しい書き方) で回る。

🤖 Generated with Claude Code

https://claude.ai/code/session_01T8TqVdo6LUrWKdVQgbScVU

talosctl v1.15.0-beta.0 から、inline の manifest が 1 行のエスケープ文字列ではなく
ブロックで書き出されるようになり、エスケープした引用符と改行を探していた確かめが落ちた
(#778 の boot)。エスケープを戻して字下げを落としたものを見るようにして、どちらの書き方でも通す。
Namespace の 3 行は grep では行をまたげないので awk で見る。

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T8TqVdo6LUrWKdVQgbScVU
@5ym
5ym merged commit 520a1f5 into main Nov 11, 2026
4 checks passed
@5ym
5ym deleted the render-check-form branch November 11, 2026 01:12
@claude

claude Bot commented Nov 11, 2026 •

Copy link
Copy Markdown

Claude finished @5ym's task in 20s —— View job


レビュー結果: 問題なし

bootstrap/render.sh の確かめ部分 (L235〜263) を読みました。

  • エスケープを戻す処理 (L239): \n と \" を戻して字下げを落としているので、1 行のエスケープ文字列でもブロック (|-) でも同じ文字列で見つかります。確かめる項目は減っていません。
  • Namespace の確かめ (L260): 直前 2 行を a と b に持つ awk で、kind: Namespace → metadata: → name: <ns> が続くことを見ています。name: の行に来たとき a はその 2 行前、b は直前の行なので、判定は正しいです。字下げは落としてあるので、エスケープ版の \n name: も一致します。$0 == n は完全一致なので、argocd が argocd-xxx に当たることもありません。
  • 否定側の確かめ (L265〜): 元のままの $OUT/controlplane.yaml を見ていますが、探している文字列に \n や " は含まれません。そのため FLAT に揃えなくても書き方の違いの影響は受けず、変更しなくて問題ありません。
  • POSIX sh / mawk: gsub と正規表現は mawk でも使える範囲です。PR 本文によれば gawk と mawk の両方で確認済みです。

軽い補足 (指摘ではありません)

  • 字下げを落とすので、name: cilium のような短い文字列は階層に関係なく一致します。ただし元から部分一致だったので、検出力の低下は実質ありません。
  • \n の置換はファイル全体にかかります。ブロック内に文字どおりの \n があっても、存在確認には影響しません。

テストについては、このスクリプトの確かめ自体が検証にあたります。alpha.2 と beta.0 の両方で gen config を回して確認したと PR 本文にあり、十分と判断します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant