今まで仕事に限定して書いてきましたが、 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 を使ったリファクタリング
- .terraform.lock.hcl を CI の中で自動で更新(commit, push)できるようにした
Event
OSS Contribution
AWS AppConfig を Terraform で管理できるようにする PR が無事マージされました。
- feat: add aws_appconfig_deployment
- fix: add the attribute "environment_id" to aws_appconfig_environment
- feat: support AppConfig Deployment Strategy
- feat: support AppConfig Hosted Configuration Version
- feat: add appconfig_configuration_profile
- feat: add aws_appconfig_application and aws_appconfig_environment
新たに作った OSS
- tfmigrator/cli: CLI to Migrate Terraform Configuration and State with terraform state command and hcledit
- Renovate github-tags Datasource Repositories
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 目立たせたりもできて便利です。