tech.guitarrapc.cóm

Technical updates

Pulumi

Pulumi リソースのプロパティが変わってしまい create-replacement が発生する場合の対処方法

Pulumi のパッケージ更新をしたら、プロパティ名が変わっており craete-replacement が生じてしまう。 Pulumi SDK 側でプロパティ名が変更されると発生するのですが、普段出会うことはまずありません。 しかし稀に、プレビューパッケージを使ったり、プレビ…

Pulumi で今のスタックを異なるプロジェクトのスタックに移動させる

Pulumi はステートを スタック (Stack) に保持しています。 スタックはリネームや別の Organization への移動はサポートされていますが、自分のOrganization の別プロジェクトへの移動はサポートされていません。 しかしスタックを後から整理したいときには…

Infrastructure as Code に最低限求めること

Infrastructure as Code (以降 IaC) で組むときに IaC ツールを選ぶ基準はいろいろあります。 IaCの言語がチームとって扱いやすいか、クラウドやサービスへのIaCの対応状況は早い/十分か、コミュニティの大きさは十分でググれば情報を入手できるか、実装がオ…

Pulumi を C# で書くときに気を付けていること

Pulumi は複数の言語で書くことができるのですが、そのうちの1つに .NET (C#) もあります。 Languages より https://www.pulumi.com/docs/intro/languages/ 以前 Pulumi を C# で書く時の事始めシリーズを書いていましたが、あれから時間がたって書き方も変…

Pulumi で Stack解析中の例外でリソースが全て消えてしまうのを防ぐ

Pulumi は Stack の解析を行って、現在のステートとの差分でどのような処理をするか preview / up で表示します。 このため、Stack の解析中 (=コードをビルドして実行してStack生成中) に例外が生じたときにどのようにハンドルされるかは重要です。 今回は …

pulumi でstateが事故ったときに過去のバージョンのstateを当てなおす

terraform もそうですが、Infrastructure as Code とかやってるとstate が壊れる日が来て軽く絶望します。 Pulumi で、誤った操作から state からリソースが200あまり消えたときにどのように復旧したのかをメモしておきます。 目次 目次 TL;DR 状況 復旧目標…

Pulumi Workaround

この記事は、Pulumi dotnet Advent Calendar 2019 の25日目です。 qiita.com 最終日は、Pulumi でこんなときどうするのかをまとめていきます。 目次 目次 TL;DR Pulumi.Aws.Iam.Invokes の Input<T> が Output<T> の依存解決を行えない Pulumi-aws の destroy で v</t></t>…

Pulumi でよく使うコマンド

この記事は、Pulumi dotnet Advent Calendar 2019 の24日目です。 qiita.com そろそろ終わりです。pulumi でよく使うコマンドを見てみましょう。 目次 目次 TL;DR ドキュメント 操作 pulumi up pulumi config pulumi destroy pulumi preview pulumi refresh …

Pulumi のState と実リソースの差分を同期する

この記事は、Pulumi dotnet Advent Calendar 2019 の23日目です。 qiita.com Terraform を使っていると、HCLで定義したリソースがHCLの定義とずれると差分として検出されました。 しかし、Pulumi では pulumi up をしただけでは検出されないことに気づきます…

ローカルPulumi ProjectとアカウントPulumi Project の紐づけ

この記事は、Pulumi dotnet Advent Calendar 2019 の22日目です。 qiita.com あまりないのですが、時にすでにある Project と ローカルのpulumi を紐づけたいときがあります。 そんなときにどうやればいいのか見ておきます。 目次 目次 TL;DR Summary Pulumi…

Pulumi で特定のリソースのみUpdateやDestroyする

この記事は、Pulumi dotnet Advent Calendar 2019 の21日目です。 qiita.com Pulumi で terraform target のような操作をどうやるか見てみます。 目次 目次 TL;DR 実際に操作する TL;DR Pulumi CLI 1.3.0 から --target によって可能になった。 合わせて rep…

pulumi up で変化するリソースの内容を確認する

この記事は、Pulumi dotnet Advent Calendar 2019 の20日目です。 qiita.com 些末なコマンドメモです。 Terraformと違って細かい差分でないのですが、Continuous Delivery していると details を忘れるアレ。 目次 目次 TL;DR Summary TL;DR pulumi up 後の…

pulumi up 時の文字化け対策

この記事は、Pulumi dotnet Advent Calendar 2019 の19日目です。 qiita.com そろそろどうやるか見てみましょう。 と思ったのですが、日本語OS上では解決方法が見つからないのでゆるぼ。 目次 目次 TL;DR Summary NOTE: だめな方法 推察 REF TL;DR 現状日本…

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

この記事は、Pulumi dotnet Advent Calendar 2019 の18日目です。 qiita.com Pulumi の各プロバイダの実装は Plugin として提供されています。 このプラグインを確認する方法を見てみましょう。 目次 目次 TL;DR Pluginの確認 GitHub .NET 実装では NuGet で…

Pulumi で他のstate 参照を行う

この記事は、Pulumi dotnet Advent Calendar 2019 の17日目です。 qiita.com Pulumi のTIPS を見ていきましょう。 Terraform の Remote State に相当する処理を見てみます。 Pulumiで 他のStack で管理しているリソースは参照できるのでしょうか? 目次 目次 …

Pulumi の state を Export したり Importする

この記事は、Pulumi dotnet Advent Calendar 2019 の16日目です。 qiita.com Pulumi を WebUI でProject/Stack 配下で管理するということは、ほかの Project/Stack に移動したいときに何か操作がいりそうですね。 それをどうするのか見てみましょう。 この記…

Pulumi でstateから特定のリソースを消す

この記事は、Pulumi dotnet Advent Calendar 2019 の15日目です。 qiita.com Pulumi の State から特定のリソースだけ管理対象外にしたい、そんなことはきっと起こります。 どのようにやればいいのか見てみましょう。 目次 目次 TL;DR 想定ケース 対応方法 R…

Pulumi でリソースのパラメーターが変化しても無視 Ignore Changes する

この記事は、Pulumi dotnet Advent Calendar 2019 の14日目です。 qiita.com すでに Pulumi で扱うこと自体はなるほど、という感じになってきましたでしょうか。 完全に理解した() を目指して、さらに進めてみます。 Terraform 作ったリソースだが、実際には…

Pulumi を CircleCI で Continuous Delivery する

この記事は、Pulumi dotnet Advent Calendar 2019 の13日目です。 qiita.com Terraform では、PRに連動させてどのようにPlan/Apply をするのかを一度は考え、すでに実践しているはずです。 私のお勧めはAtlantis ですが、CircleCI でもいいでしょう。Terrafo…

Pulumi の Project と Stack の構成

この記事は、Pulumi dotnet Advent Calendar 2019 の12日目です。 qiita.com Pulumi には、Project と Stack があります。 この構成どうするのがコンセプト的にはいいのか見てみます。 目次 目次 TL;DR project:stack を 1:n にしない TL;DR Stack は、あく…

Pulumi がTerraform と比較したときに困ったこと

この記事は、Pulumi dotnet Advent Calendar 2019 の11日目です。 qiita.com Terraform に慣れていると Pulumiもイメージしやすいところはあります。 一方で Terraform との違いでどうすればいいのかな? となることもあります。 どんなことがあるのか見ます…

Pulumi の設定を Config で保持する

この記事は、Pulumi dotnet Advent Calendar 2019 の10日目です。 qiita.com Pulumi は Web UIがあり、そこにはConfig が見えます。 実際にコードでも Config が参照でき、機密情報はConfigに保持して参照することでgit から分離できてよさそうです。 早速見…

Pulumi で既存のリソースを取り込む

この記事は、Pulumi dotnet Advent Calendar 2019 の9日目です。 qiita.com 前回までの記事で概ね Pulumi でかける感触が出てきたと思います。 今回から、一歩先に進めることを見ていきましょう。 まずは、既存のリソースを取り込むことです。terraform impo…

Pulumi でリソースの結果を参照させる

この記事は、Pulumi dotnet Advent Calendar 2019 の8日目です。 qiita.com リソースを作ったら、ほかのリソースを作るときにその結果を参照させたいお気持ちになります。 どうやるのか見てみましょう。 目次 目次 TL;DR Summary Detail Output の処理の種類…

Pulumi のComponentResource を書く時の注意

この記事は、Pulumi dotnet Advent Calendar 2019 の7日目です。 qiita.com 前回Componense Resource を薄くラップして使うことを見ました。今回は ドキュメントにないComponentResource の暗黙的なお約束です。 今後拡充するかもです。 目次 目次 TL;DR Com…

Pulumi リソースのグルーピングと非同期処理を行う

前回リソースの入れ子をする方法を見ました。 この記事は、Pulumi dotnet Advent Calendar 2019 の6日目です。 qiita.com 今回は、ComponenseResourceで親子関係の維持、Dataリソースをasync/awaitで使うという二点を担保できるようにResourceクラスの簡単な…

Pulumi のリソースを入れ子にする

この記事は、Pulumi dotnet Advent Calendar 2019 の5日目です。 qiita.com リソースの親子関係を持たせることで、preview表示、グラフ表示したときに入れ子状態が格段と見やすく把握しやすくなります。 ではどうやって親子関係を持たせればいいのでしょうか…

Pulumi で Aws のリソース情報の取得

この記事は、Pulumi dotnet Advent Calendar 2019 の4日目です。 qiita.com terraform でいうところの data リソースに相当する処理を見てみましょう。 すでに存在するリソースを参照して、ほかのリソースで利用するための方法です。 目次 目次 TL;DR 現在の…

Pulumi Web UI でできること

この記事は、Pulumi dotnet Advent Calendar 2019 の3日目です。 qiita.com リソースを作るとなんか可視化されるらしい、Pulumi の Web UI についてざっくりみてみましょう。 目次 目次 TL;DR STACKS SETTINGS TL;DR Pulumi で圧倒的に使いやすいのが Web UI…

Pulumi のコンセプト - プログラミングモデル

この記事は、Pulumi dotnet Advent Calendar 2019 の2日目です。 qiita.com Getting Started を一日目で見たので、Pulumi で C# を使ってそもそもどういう風に書けばいいのかコンセプトを把握します。 疑問はそれから順次書きながら解消していきましょう。 …