今まで仕事に限定して書いてきましたが、 OSS 活動なんかにも触れてもいいんじゃないかと思ったので分かる範囲で書きます。

仕事

  • Docker Image を Docker Hub から ECR へ移行
  • Terraform
    • .terraform.lock.hcl を CI の中で自動で更新(commit, push)できるようにした
      • Terraform に詳しくない人も使うので、自動化したほうが良いと判断
    • tfmigrate を CI に導入
    • (in progress) Terraform Modules を Terraform の Monorepo とは別リポジトリで管理して versioning するようにした
    • Route53 の管理を Roadworker から Terraform へ移行
    • tfmigrate を使ったリファクタリング

Event

OSS Contribution

AWS AppConfig を Terraform で管理できるようにする PR が無事マージされました。

新たに作った OSS

tfmigrator

Terraform Configuration と State をマイグレーションする tfmigrator の CLI をリリースしました。 tfmigrator には紆余曲折有り(?)、時系列的に

  • suzuki-shunsuke/tfmigrator を開発。 CLI
  • YAML の設定ファイルの表現力に限界を感じ、 suzuki-shunsuke/tfmigrator をフォークして Go のライブラリ tfmigrator/tfmigrator を開発
    • 簡単に CLI を実装できるように API も提供
    • ついでに色々改良
      • hcledit のインストールが不要
      • ファイルの in place の更新をサポート
      • dry run のサポート
      • 複数のリソースをまとめて扱えるような API も提供 QuickRunBatch
      • etc
  • 実際に tfmigrator/tfmigrator を使ってみると Go を書くのがちょっと面倒くさい
    • そもそも複雑な rule を一度に適用しようとするのが間違っていると感じた
  • tfmigrator/tfmigrator を使い、 CLI も実装 tfmigrator/cli
    • やはり基本的なユースケースでは YAML 書くほうが楽

Renovate github-tags Datasource Repositories

Renovate の Datasource や Manager でサポートされていない package を Renovate で update するために、 package ように GitHub Repository を作って package のバージョンに合わせて GitHub tag を更新し、 github-tags Datasource として使おうというプロジェクトです。 現状 AWS RDS や AWS Elasticache の engine version 用のリポジトリを作っています。 tag は GitHub Actions を毎日定期実行することで更新します。 詳細はリポジトリの README でも読んでください。

新しいバージョンをリリースした OSS

terraform v0.15.4 から Terraform 以外での変更も plan に出力されるようになって わかりにくいと感じたので、 tfcmt でテンプレート変数追加して見やすくできるようにしました。 Refreshing state のログを除外したり、warning 目立たせたりもできて便利です。

Blog