tech.guitarrapc.cóm

Technical updates

Pulumi のプラグインを確認する

この記事は、Pulumi dotnet Advent Calendar 2019の18日目です。

qiita.com

Pulumiの各プロバイダの実装はPluginとして提供されています。 このプラグインを確認する方法を見てみましょう。

TL;DR

  • Issue報告などでPulumi VersionやPluginバージョンを添えると圧倒的に手早い
  • pulumi plugin lsでpluginが確認できる
  • .NET (C#) ではNuGetで管理されている

Pluginの確認

Pluginは、awsとかazureのように、どこの操作をするかのグループ。

pulumi pluginでプラグインの操作ができます。

$ pulumi plugin ls

NAME  KIND      VERSION  SIZE    INSTALLED   LAST USED
aws   resource  1.8.0    220 MB  6 days ago  6 days ago

TOTAL plugin cache size: 220 MB

GitHub

Pluginは、pulumi-xxxxリポジトリで開発されています。例えば、Awsプラグインなら、pulumi/pulumi-awsです。

.NET 実装では NuGet で参照される

Pulumiが生成するInfra.csprojを見るとPulumiのNugetが入っています。

  <ItemGroup>
    <PackageReference Include="Pulumi.Aws" Version="1.10.0-preview" />
    <PackageReference Include="Pulumi" Version="1.6.0-preview" />
  </ItemGroup>

多くの場合、Pulumi nugetはPulumi.Awsなど実際に使っているプロバイダの依存バージョンで暗黙的に利用されています。 しかし、Pulumi Nugetで修正されていて明示的に取得する必要があります。

Pulumi.Aws.Invokes.GetCallerIdentity throws System.NullReferenceException · Issue #801 · pulumi/pulumi-aws

この場合は、プロジェクトのNuGet管理からPulumiPulumi.Aws NuGetを更新する。

Plugin の元ネタ

基本的に、Terraformをベースに書く言語実装が出力されています。そのため、Pluginの挙動でもしよくわからないことがあったら、Terraformのリソースでそのパラメーターが受け付けられているかなどを確認すると動作します。

バージョン履歴を見ると、現在どのバージョンのTerraform Providerをベースにしているかがわかります。

https://github.com/pulumi/pulumi-aws/blob/a113b17652528591ccee845ea27058de57265066/CHANGELOG.md#190-2019-11-16