使用 Pulumi 管理 Azure 资源

2025-06-08#Azure#Pulumi

Pulumi 是 IaC (基础设施即代码)的工具。本文以管理 Azure 资源为例,使用 Python 语言介绍其使用方法。

安装 🔗

安装 Pulumi 🔗

可参考《Download & install Pulumi》 页面,选择合适的方式安装 Pulumi。在安装好 Pulumi 之后,可在命令上中输出其版本号,以确定安装成功。

本文所使用的 Pulumi 版本是 v3.175.0

pulumi version
v3.175.0

安装 Python 及包管理工具 🔗

使用 Pulumi 时,可选择不同的编程语言编写基础设施代码,比如 Python、Go、C#、Java 等。如果使用 Python,那么为了解决老大难的 Python 包管理的问题,可选择使用 uvpoetry 或者 pip 之一来管理依赖。

项目示例 🔗

创建项目目录 🔗

假定项目目录为 iac,在创建好改目录后,进入该目录:

mkdir iac
cd iac

此后所有的操作都在 iac 目录中进行。

登录后端 🔗

Pulumi 会将基础设置的状态保存起来,可以保存在云端,也可以保存在本地。无论保存在哪里,都会使用进行加密保存。在正式项目中,通常都会将状态保存在云端;在本文示例中,将状态保存在本地。关于状态和存储后端的详细介绍,见文档 《Managing state & backend options》

登录后端的命令为 pulumi login,但默认将状态 Pulumi 的云服务,为了保存到本地,可使用:

pulumi login --local

需要注意,默认会将后端的地址设置为 file://~ ,即用户主目录)。但也可以修改,比如保存到当前目录下的 data 目录下:

mkdir data
pulumi login file://./data

创建新项目 🔗

pulumi new https://github.com/pulumi/templates.git//azure-python --force

注意:尽管 Pulumi 的文档提到使用 pulumi new azure-python --force 可创建项目,但在我的机器上会提示如下错误:

error: cloning templates repo: reference not found

然后就可以在交互式提示符中,输入相关信息创建项目。创建成功后,可看到项目主目录里多了一些文件,比如 Pulumi.yaml 文件:

name: vision
description: vision
runtime:
  name: python
  options:
    toolchain: uv
config:
  pulumi:tags:
    value:
      pulumi:template: https://github.com/pulumi/templates.git//azure-python

创建 stack 🔗

pulumi stack init {stackName}

编写基础设置代码 🔗

接下来就编辑 Pulumi 创建的 __main__.pyPulumi.{stackName}.yaml 文件里,编写基础设置代码了。

预览改动 🔗

pulumi preview --diff --stack {stackName}

应用改动 🔗

pulumi up --stack {stackName}

删除 stack 中的所有资源 🔗

pulumi stack destory {stackName}

删除 stack 和配置文件 🔗

pulumi stack rm {stackName}

加载中...