0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pulumiについて勉強してみた(①基礎知識編)

Posted at

1. はじめに

IaCツールの1種「Pulumi」について勉強したため、備忘録的に記事を作成。
クラウドインフラの構築や運用をコードで管理する「Infrastructure as Code(IaC)」は、モダンなシステム開発・運用の現場において不可欠な手法である。IaCを導入することで、インフラ構成の再現性が高まり、変更履歴の追跡や自動化、CI/CDパイプラインとの統合などが可能になる。
本記事で紹介する「Pulumi」は、IaCツールの中でも PythonやTypeScriptなどの一般的なプログラミング言語でインフラを記述できる、よりモダンなツールである。

2. IaCとは

Infrastructure as Code(IaC) とは、サーバーやストレージ、ネットワークといったインフラ構成をコードで記述し、自動的に構築・管理できるようにする手法である。
従来はGUIや手作業で行われていたクラウドリソースの作成・設定を、IaCによって再現性のあるコードとして管理することができる。

【IaCを活用するメリット】

  • インフラの構成をバージョン管理できる
  • 設定ミスを減らせる
  • テスト・CI/CDと統合できる
  • 複数人でレビューや再利用がしやすくなる

3. IaCツールの分類とPulumiの立ち位置

IaCツールはさまざまな種類がありますが、次の2つの観点で分類すると理解しやすくなる。

  • 構成管理方式による分類:エージェントベース vs エージェントレス
  • 記述スタイルによる分類:宣言型 vs 命令型

エージェントベース vs エージェントレス

分類 説明
エージェントベース 管理対象のサーバーに常駐型エージェントソフトウェアをインストールし、そのエージェントを通じて設定や監視を行う方式。 オンプレミス環境や、継続的な構成管理・監視が必要な大規模構成に適している。
エージェントレス クラウドAPIやSSH接続などを通じて、エージェントなしで直接構成を適用する方式。クラウド環境との相性が良く、セットアップの手軽さや自動化のしやすさから、近年はこちらが主流。

宣言型 vs 命令型

分類 説明
宣言型 「最終的にどうなってほしいか(desired state)」 を記述し、ツール側が現在の状態との差分を解決してくれる方式。TerraformやCloudFormationが代表的。
命令型 「どのように構成するか(手順)」 を逐次的に記述する方式。AnsibleやPulumiのようにプログラミング言語を用いて柔軟な処理が可能。

ツールごとの分類マッピング

エージェントベース エージェントレス
宣言型 - Terraform, CloudFormation, Pulumi(※)
命令型 Puppet, Chef Ansible, Pulumi(※)

※ Pulumiは命令型の言語(Python、TypeScriptなど)で記述する一方、実行時には「意図された状態(desired state)」を解析し、差分を適用するという宣言型の挙動を持つ。
そのためPulumiは、「命令型スタイルで書ける宣言型IaCツール」とも言える、ハイブリッドな特性を持ったツールである。

4. Pulumiが適している場面

Pulumiは、以下のような場面で特に力を発揮する:

  • アプリケーションとインフラを一体化して管理したいとき
    インフラとアプリを別管理せず、同じコードベースで定義・デプロイしたい

  • 動的なインフラ構成が求められるとき
    条件分岐やループ、関数、モジュールなどを駆使して柔軟に記述したい

  • 宣言型ツールでは柔軟性が足りないと感じたとき
    外部サービスや設定ファイルを使って構成を動的に生成したい

  • マルチクラウド構成を1つのコードで管理したいとき
    AWS、Azure、GCPなどをまたぐ構成を統一的に記述したい

5. Pulumiのユースケース例

Pulumiのユースケース例として、「アプリとインフラを同一言語で、同じコードの中で記述・管理できる」という点を強調したユースケースを示す。

Pythonで開発したデータ処理アプリケーションと、その実行環境であるAWS Lambda、トリガー用のEventBridgeルール、入力データを保持するS3バケットなどを、すべてPythonコードの中で構成・デプロイできる。
このような統合によって、アプリケーションとインフラの整合性がとれ、変更や保守も容易になる。従来はツールやリポジトリを分けて管理していたインフラとアプリの境界を、Pulumiは自然に統合する。

6. 終わりに

次の投稿(リンク)で、Pulumiの活用フローとPulumiプロジェクト内の最適なフォルダ構成について説明する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?