最近のPulumi動向（10月-11月分）

一年振り返ろうと思ったけど量が多すぎて挫折しました。Pulumiの開発のスピード超速い…
特に便利だと思った機能追加は太字にしてあります。

淡々と[pulumi/pulumiリポジトリのCHANGELOG.md](https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md)を見ていきます。

## 1.3.0 (2019-10-09)

- `pulumi preview`の挙動改善 [#3245](https://github.com/pulumi/pulumi/pull/3245)

- `brew`でインストールされたCLIは、Homebrew JSON APIでバージョン情報を取得するようになった [#3290](https://github.com/pulumi/pulumi/pull/3290)
- `pulumi stack rename`でstack名変更できるようになった [#3292](https://github.com/pulumi/pulumi/pull/3292)
- `pulumi/pulumi`Dockerhubコンテナに`helm`追加 [#3294](https://github.com/pulumi/pulumi/pull/3294)
- `.pulumi`ディレクトリのパスを`PULUMI_HOME`環境変数で指定できるようになった [#3300](https://github.com/pulumi/pulumi/pull/3300) (Fixes [#2966](https://github.com/pulumi/pulumi/issues/2966))
- `pulumi update`に`--target urn`, `-t urn`オプションが追加。個別のリソースだけupdateできるようになった。`-t urn1 -t urn2`のように複数指定可能
- **[transformations](https://www.pulumi.com/docs/intro/concepts/programming-model/#transformations)追加 [#3174](https://github.com/pulumi/pulumi/pull/3174) [#3319](https://github.com/pulumi/pulumi/pull/3319)**
    - `Resource`のプロパティを動的に上書きできるようになった


## 1.3.1 (2019-10-09)

- 1.3.0の[#3245](https://github.com/pulumi/pulumi/pull/3245)のrevert


## 1.3.2 (2019-10-16)

- `get*`（i.e. `aws.ec2.getSubnetIds(...)`）がhang, crashする問題を修正 [#3260](https://github.com/pulumi/pulumi/issues/3260) [#3309](https://github.com/pulumi/pulumi/issues/3309)



## 1.3.3 (2019-10-17)

- Fix an issue with first-class providers introduced in 1.3.2.
    - 何が修正されたのかよくわからない


## 1.3.4 (2019-10-18)

- 1.3.3で出たコンソール出力のバグ修正


## 1.4.0 (2019-10-24)

- [Python] `FileAsset`に`os.PathLike`を渡せるようになった [#3368](https://github.com/pulumi/pulumi/pull/3368)

- コンソールでの色表示のバグ修正 [#3385](https://github.com/pulumi/pulumi/pull/3385)


## 1.4.1 (2019-11-01)

- .NETサポート（preview版）

- コンソールでの表示崩れ修正 [#3417](https://github.com/pulumi/pulumi/pull/3417)

- Verify deployment integrity during import and issue an error if verification fails. The state file can still be
  imported by passing the `--force` flag. [#3422](https://github.com/pulumi/pulumi/pull/3422)
    - "Verify deployment integrity"が意味不明なので原文のまま載せました
    - `pulumi stack import`時に何らかのチェックが追加された模様

- `pulumi preview`のoutputの挙動改善 [#3427](https://github.com/pulumi/pulumi/pull/3427)

- `pulumi update --replace urn`でreplaceするリソースを指定できるようになった。`--replace urn1 --replace urn2`のように複数指定可能。`pulumi update --replace urn --target urn`, `pulumi update --target-replace urn`のようにtargetと組み合わせて実行も可能 [#3418](https://github.com/pulumi/pulumi/pull/3418)

- `pulumi stack`コマンドが依存関係をtree表示するようになった [#3430](https://github.com/pulumi/pulumi/pull/3430)

- **configがlistとmapに対応 [#3342](https://github.com/pulumi/pulumi/pull/3342)**

- `ResourceProvider#StreamInvoke`追加 [#3424](https://github.com/pulumi/pulumi/pull/3424)


## 1.5.0 (2019-11-06)

- alias重複時にエラーを出すようになった [#3457](https://github.com/pulumi/pulumi/pull/3457)

- 内部APIのバージョンアップデート [#3348](https://github.com/pulumi/pulumi/pull/3348)
- コマンド実行までの速度改善（CLIアップデートチェックを並列で行うようになった） [#3441](https://github.com/pulumi/pulumi/pull/3441)
- `pulumi watch`コマンド追加（experimental） [#3391](https://github.com/pulumi/pulumi/pull/3391)
    - hot reload的なやつ
    - 使う前に`PULUMI_EXPERIMENTAL=true`にしておかないといけない


## 1.5.1 (2019-11-06)
- **.NETサポート**


## 1.5.2 (2019-11-13)
- `pulumi policy publish`がPolicy Pack名を参照するようになった [#3459](https://github.com/pulumi/pulumi/pull/3459)

- [Go] `Output`APIのリファクタ [#3496](https://github.com/pulumi/pulumi/pull/3496)


## 1.6.0 (2019-11-20)
- [Go] `config.GetObject`サポート [#3526](https://github.com/pulumi/pulumi/pull/3526)
    - ネストしたconfigの情報を構造体にバインドできるようになった

- [Go] `IgnoreChanges`サポート [#3514](https://github.com/pulumi/pulumi/pull/3514)
- [Go] `go run`でのpulumiプログラム実行をサポート [#3503](https://github.com/pulumi/pulumi/pull/3503)
    - 実行前にバイナリをビルドする必要がなくなった
- **`pulumi preview`の挙動改善 [#3327](https://github.com/pulumi/pulumi/pull/3327)**
    - リソースに変更が無いのにpreviewでdiffが表示されていた問題([#3301](https://github.com/pulumi/pulumi/issues/3301))の修正
    - [#3245](https://github.com/pulumi/pulumi/pull/3245)のバグ修正
- `pulumi stack init`時のstack名のバリデーションを追加
- [Go] go1.13.xサポート
- `pulumi update --target`, `pulumi destroy --target`のtargetに指定されているリソースに依存するリソースがある場合、これらのコマンドはエラーを返すようになった。`--target`を指定して`update/delete`を行う場合は、依存するリソースを全て`--target`引数で列挙するか、`--target-dependents`引数で依存するリソース全てに対する変更を許可しなければならない
- [TS/JS] node 13.xサポート [#3512] (https://github.com/pulumi/pulumi/pull/3512)
- `StackReference.getOutputSync`, `requireOutputSync`が非推奨に。`StackReference.getOutput`, `requireOutput`を代わりに使用すること


## 1.6.1 (2019-11-26)
- [Go] `ReadResource`, `RegisterResource`, `Invoke`をparent, providersに渡せるようになった [#3563](https://github.com/pulumi/pulumi/pull/3563)

- [Go] `ReadResource`の挙動修正 [#3581](https://github.com/pulumi/pulumi/pull/3581)
- [Go] `DeleteBeforeReplace`の挙動修正 [#3572](https://github.com/pulumi/pulumi/pull/3572)
- [TS/JS] `PULUMI_PREFER_YARN`環境変数を追加 [#3556](https://github.com/pulumi/pulumi/pull/3556)
    - `npm`の代わりに`yarn`を使用して`pulumi new`できるようになった
- `--policy-pack`に相対パスを指定できるようになった [#3565](https://github.com/pulumi/pulumi/issues/3564)
  

## まとめ
オープンソースの`CHANGELOG.md`を追っていると、「今まで気づいてなかったけどこんな機能もあったのか」と勉強になります。Pulumiはまだ歴史が浅いので、今後の記事でもう少し遡っていこうと思います。

ここ2ヶ月での目玉はやはり、v1.4.1で入った[configのlist&map対応](https://github.com/pulumi/pulumi/pull/3342)でしょう。`getObject`でオブジェクトや構造体にconfigの情報をそのままバインドできるようになり、stack間での差分のほとんどが`Pulumi.*.yaml`ファイルで吸収できるようになりました。

[Fresh out Go support](https://github.com/pulumi/pulumi/issues/1614)にリストされてるいくつかの機能も最近入ってきてます。Goのサポートに向けた開発が動き続けているので期待大です。