使用 Pulumi 管理 Azure 资源
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 包管理的问题,可选择使用 uv
、poetry
或者 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__.py
和 Pulumi.{stackName}.yaml
文件里,编写基础设置代码了。
预览改动 🔗
pulumi preview --diff --stack {stackName}
应用改动 🔗
pulumi up --stack {stackName}
删除 stack 中的所有资源 🔗
pulumi stack destory {stackName}
删除 stack 和配置文件 🔗
pulumi stack rm {stackName}