コンテンツにスキップ

更新の履歴

tegata と、このリポジトリのプロバイダー(版は共通)の、目立った変更のすべてです。形は Keep a Changelog に、版は Semantic Versioning に従います。1.0 の前は、マイナーの版(0.2 → 0.3)で設定やプロバイダーとの約束が変わることがあり、そのときは移り方を書きます。

  • apply が、同じ保存先を使うほかの設定や、同じ保存先のほかの環境が届けた GitHub の secrets を消さなくなりました(#24)。消すのは、その設定が書いているシークレットの届け先だけです。YAML からリソースを外したシークレットは、届けたままになります。リソースを外す前に、そのシークレットを destinations から外して apply を流してください(やり方)。status は、そういうシークレットがまだどこに届いているかを示します。
  • 両方が同じ保存先を使うとき、apply が、ほかの環境の値をこの環境の届け先に届けなくなりました。そのシークレットを挙げてエラーで終わります(#24)。

0.3.0 で、環境、認証情報の読み元、タイマー向けの render が加わりました。0.2 向けに書いた設定は、そのまま動きます。

  • 環境(#6):ステージング、本番などが 1 つの設定を共にし、違うのは、保存先、各アイデンティティのメンバー、プロバイダーの設定と認証情報、リソースの設定、届け先だけになります。各環境の上書きは、そのためのファイル(environments: { production: envs/production.yaml })か、その場に書きます。-e <name> か TEGATA_ENV で選び、tegata env <name> でまとめた設定を出せます。
  • 環境の confirm: true で、保存先を変えるコマンドが、そこで何をするかを伝え、環境の名前を求めるようになります。--yes で問いを飛ばせ、settle、prune、set、import も --yes を受け付けるようになりました。
  • 環境のシークレットには tegata-env=<name> のラベルが付き、tegata はほかの環境のシークレットに触りません。-e なしの tegata check はすべての環境を確かめ、Google Cloud のプロジェクトや IAM のメンバーを共にする環境を挙げます。
  • タイマー向けの render(#8):中身の変わらないファイルは書き直しません。--on-change <command> は、どれかのファイルが変わったとき、書いたあとに 1 回動き、名前が TEGATA_CHANGED に入ります。--exit-code は、何か変わったら 3 で終わります。--fail-on-missing は、ない名前や読めない名前があれば何も書きません。ガイドのサーバーで動かすに、systemd のタイマーと、Secret Manager の読み出しの料金があります。
  • 認証情報の読み元(#9):プロバイダーの管理の認証情報を、保存先とは別の credential_sources から取れます。ほかのプロジェクトの Secret Manager(gcp)か、どんなコマンドでも(command。1Password、Vault、AWS Secrets Manager など)。認証情報は from でそれを名指しします。env があれば、そちらが優先されます。環境ごとに別の読み元を指せます。ガイドの管理の認証情報と CIに、どこに置くかと、長く使う鍵なしで CI で tegata を動かす方法があります。

何もしなくてかまいません。プロバイダーとの約束は変わっていないので、0.2 で lock したプロバイダーはそのまま動きます。0.3 に上げるには、version: "^0.3" にして tegata init --upgrade を流します。

0.2.0 で tegata.yaml の形が変わりました。0.1 向けに書いたファイルも警告つきで動き、tegata migrate で新しい形に出せます。

  • 設定に、保存先、アイデンティティ、各シークレットの読み手を書くようになりました(#13、#14)。store は stores(名前 → 保存先。今は 1 つ)に、roles は identities(名前 → IAM のメンバーの一覧)になり、各リソースは stores.<store> の下にシークレットを { output, name, readers } で挙げます。各シークレットの読む権限は、その readers のメンバーとちょうど同じになり、雛形は権限を与えなくなりました。previous は { name: ... } と書き、写すもとの値の読み手が読みます。output の既定は value です。
  • tegata check は、設定とプロバイダーを確かめます。tegata check <identity> <templates> は、アイデンティティが雛形の中のすべての名前を読めることも確かめ、読めるが雛形が使っていないシークレットを警告として挙げます。
  • tegata import <templates> <dir> は、role の代わりに、ファイルを埋めたもとの雛形のディレクトリを受け取ります。
  • 文書を、ガイドとリファレンスに分けて並べ直し、コマンドのリファレンスを足しました(#10)。
  • tegata migrate は、readers を雛形から取って、設定を新しい形で出します。そのあとの apply は保存先を何も変えません。標準エラー出力に、古い role の雛形を比べる tegata check のコマンドを挙げます。
  • tegata --help が文書を挙げ、各コマンドのヘルプが、コマンドのリファレンスのその節にリンクし、エラーのあとに助けになるページを示す see: の行が出るようになりました(#11)。
ターミナルウィンドウ
tegata migrate > tegata.new.yaml # also lists the tegata check commands for your templates
diff tegata.yaml tegata.new.yaml # comments are not kept
mv tegata.new.yaml tegata.yaml
tegata apply --dry-run # nothing to make

プロバイダーとの約束は変わっていないので、0.1 で lock したプロバイダーはそのまま動きます。0.2 に上げるには、version: "^0.2" にして tegata init --upgrade を流します。

  • tegata init が、トークンなしのリクエストの GitHub の上限に収まるようになりました。GITHUB_TOKEN がなければ、リリースのファイルを公開のダウンロードの URL から取り、API を使うのはリリースの一覧だけです。トークンがあれば、各リリースをファイルごとではなく 1 回だけ取ります。トークンなしで 403 や 429 になったときは、トークンの付け方を伝えます(#3)。

最初のリリースです。

  • コマンドの init、check、status、apply、rotate、settle、prune、set、import、render。
  • 保存先:Google Cloud Secret Manager と、tegata を試すための手元のディレクトリ。
  • 組み込みのプロバイダーの random、manual、value と、プロバイダーの cloudflare(api_token、tunnel_token)、tailscale(auth_key)、aws(ses_smtp_credentials)、gcp(sql_user)、terraform(outputs)。
  • プロバイダーとの約束(版 1)と、Rust でプロバイダーを書くための tegata-plugin のクレート。
  • tegata init が GitHub のリリースからプロバイダーを入れます。SHA256SUMS の minisign の署名を確かめ、すべてのプラットフォームのファイルの SHA-256 を tegata.lock に書きます。
  • 届け先:リポジトリか環境の GitHub Actions の secrets に、シークレットの写しを置きます。
  • リリースは、GitHub のマシンで artifact attestations を付けてビルドし、SHA256SUMS には保守する人が署名します。