contentPulumiを使ってみた【AWS】AWSProvisioningInfrastructure_as_codePulumiはじめに今まではTerraformとほんの少しのCloudFormationでAWS環境を管理しています。上記のツール群は日々アップデートされていますが、それら以外にも頻繁にアップデートされていたり新たなツールが出てきたりと目まぐるしく変化するためキャッチアップを怠ってました...。感もありますが、触ってみようと思います。hybrid.https://www.pulumi.com/product/と公式に記載があるとおり、アプリケーションとインフラストラクチャを管理・デプロイできるツールです。複数の言語とプロバイダーに対応しています。対応言語は下記の言語です。(Preview)対応プロバイダーは現時点では下記に対応しています。CloudKubernetesLinodeOpenStackPacket.netvSphere個人で使う分には無料ですが、チームなどで使おうとすると有償版になります。現在もっと大きい規模でも使えるようカスタムプランがあります。チーム/ロールへの対応、オンプレ対応やSAML/SSOに対応しているみたいです。Start早速始めてみましょう!今回はAWS環境を利用して試していこうと思いますので、下記ページに従って進めていきます。Runtime冒頭でも記載したとおり、下記言語に対応しており言語ごとに必要なバージョンは下記になります。later.あまり無いとは思いますが、インストールしていない場合はLTSをインストールすれば大丈夫だと思います。configureこちらは既にAWSを利用している場合はdefaultのcredentialsを見に行きます。複数のprofileを持つ場合は、指定してあげるか環境変数に追加しておくかの対応が必要です。up'これでプロジェクトが作られました。フォルダ配下に色々と作成されています。Project上記で作成されたファイルを見ていきましょう。upを打ってS3バケットを作成してみます。detailsカーソルでは十字キーで操作可能です。https://app.pulumi.com/[USER_NAME]/quickstart/dev/updates/1上記URLにアクセスし、コンソールから確認してみます。タイムラインもみてみます。設定も確認AWSコンソールも確認サフィックスが付いてますね。planみたいなことができます。https://app.pulumi.com/[USER_NAME]/quickstart/dev/previews/efa6381b-4837-40bc-ad54-ebe050eea1f4コンソールStackという名前を使っているんでもしや、と思いましたがそんなことはありませんでした。(SDK使っているんだから当然ちゃ当然ですね。ProgramKMSを追加して、先ほど作成したS3バケットを暗号化します。Changesでは変更かけたファイルでデプロイしてみましょう。https://app.pulumi.com/[USER_NAME]/quickstart/dev/updates/2バッチリですね。Stackでは作ったリソースを削除しましょう。detailsここでもちゃんと確認してくれます。問題ないことを確認したらyesを選択して削除しましょう。removed!もしくはdestroy前に下記のように強制的に削除もできます。(リソースは残るので使う場面は無いと思いますが。startはおしまいです。Terraformのprovidersを利用してるみたいなので私は割と親和性高くて扱いやすいと思いました。Instanceの作成はこんな感じで書けます。hands_on.hostId;その他コマンドなどPulumiの基本コマンドは下記です。スタックとそれに紐づくリソースを削除する。現在Pulumiにログインしているユーザーを表示するコマンド上記から頻繁に利用するコマンドと注意すべきコマンドをピックアップしてみます。出力結果を色付けする。リソースの操作を並列で実施する。実行するStack名を指定する。リソースの操作を並列で実施する。実行するStack名を指定する。URN(awsの場合arn)を指定してデプロイする。リソースの操作を並列で実施する。実行するStack名を指定する。URN(awsの場合arn)を指定してデプロイする。実行するStack名を指定する。リソースの操作を並列で実施する。実行するStack名を指定する。URN(awsの場合arn)を指定して削除する。楽しみながら触れました。コンソールが見やすくてよかったです。依存関係の解決はTerraformのようによしなにしてくれないので、そこは注意が必要です。