服务器 Pulumi 配置教程:从安装到部署一台云主机

Pulumi 是一款用通用编程语言编写基础设施即代码(IaC)的工具,你可以用 TypeScript、Python、Go 等语言描述云服务器、网络和安全组,再通过命令行创建和更新资源。
这篇教程面向零基础用户,带你在一台 Linux 机器上完成 Pulumi 安装、凭据配置,并用 TypeScript 创建一台云主机,最后验证部署结果。

开始之前需要准备什么

Pulumi 本身只是一个客户端工具,它负责把你的代码转换成云厂商的 API 调用。
因此你需要准备三样东西:

  • 一台可以联网的 Linux 服务器或本地 Linux 环境,本文以 Ubuntu 22.04 为例,其他发行版命令略有差异。
  • 一个云厂商账号,并且已经开通访问密钥(Access Key / Secret Key),本文用通用写法,具体字段名以你使用的云厂商控制台为准。
  • 一个 Pulumi 账号,用来保存部署状态。免费的个人账号即可满足学习和单机部署需求,具体额度以官网当前页面为准。

先在终端确认基础环境:

uname -a
node -v

如果没有 Node.js,可以先用系统包管理器安装,例如 sudo apt update && sudo apt install -y nodejs npm。
Pulumi 的 TypeScript 模板依赖 Node.js,版本建议不要太旧。

安装 Pulumi 并完成登录

官方提供了一键安装脚本,适合快速体验:

curl -fsSL https://get.pulumi.com | sh

安装完成后重新加载环境变量,或者直接执行:

export PATH=$PATH:$HOME/.pulumi/bin
pulumi version

能输出版本号就说明安装成功。
随后登录 Pulumi 托管状态的后端:

pulumi login

命令会提示你打开浏览器获取 Access Token,把 Token 粘贴回终端即可。
如果你在无法打开浏览器的服务器上操作,可以先在本地生成 Token,再用 pulumi login 粘贴。

如果你不想把状态放在 Pulumi 云端,也可以使用对象存储作为后端,例如 pulumi login s3://你的桶名。这种方式需要额外配置存储凭据,初学者先用默认方式更容易跑通。

配置云厂商凭据和项目初始化

Pulumi 通过环境变量读取云厂商密钥。
不同厂商的变量名不同,常见形式如下,请替换成你实际使用的厂商文档中给出的名称:

export AWS_ACCESS_KEY_ID="你的AccessKey"
export AWS_SECRET_ACCESS_KEY="你的SecretKey"
export AWS_REGION="ap-southeast-1"

为了让配置在每次打开终端时都生效,可以把上面几行写进 ~/.bashrc,然后执行 source ~/.bashrc。
注意不要把真实密钥提交到 Git 仓库,生产环境更推荐使用临时凭据或密钥管理服务。

接着创建一个项目目录并初始化:

mkdir pulumi-demo && cd pulumi-demo
pulumi new typescript

命令会依次询问项目名、描述和堆栈名。
堆栈可以理解为同一套代码的不同环境,例如 dev 和 prod。
初学者先创建一个 dev 堆栈即可。
初始化完成后,目录里会出现 index.ts 和 package.json。

用 TypeScript 创建一台云主机

打开 index.ts,把内容替换成下面这段示例。
它创建一台最小规格的云主机,并输出公网 IP:

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const server = new aws.ec2.Instance("demo-server", {
  ami: "ami-xxxxxxxx",
  instanceType: "t3.micro",
  tags: { Name: "pulumi-demo" },
});

export const publicIp = server.publicIp;

其中 ami 需要替换成你目标区域里可用的镜像 ID,instanceType 也要确认该区域支持。
写好后安装依赖并预览变更:

npm install
pulumi preview

preview 只展示将要创建的资源,不会真正扣费或改动线上环境。
确认无误后再执行:

pulumi up

命令会再次列出变更清单,输入 yes 回车后开始创建。
看到 publicIp 输出,说明服务器已经创建成功。

容易踩坑的地方

密钥没有生效:如果 pulumi up 报认证失败,先在当前终端执行 echo $AWS_ACCESS_KEY_ID 确认变量存在。
环境变量只在当前会话有效,新开终端需要重新加载。

镜像 ID 不匹配:AMI 是分区域的,复制其他区域的 ID 会报找不到镜像。
请到你实际使用的区域控制台查询可用镜像。

资源创建后忘记清理:云主机按小时计费,测试完成后执行 pulumi destroy 删除资源,避免持续产生费用。
删除前确认没有需要保留的数据。

状态文件冲突:多人协作时不要各自在本地修改同一堆栈,建议统一使用 Pulumi 云端状态或共享后端,减少状态不一致的问题。

如何验证部署结果

验证分两步。
第一步看 Pulumi 输出:

pulumi stack output publicIp

能打印出 IP 地址,说明资源状态已记录。
第二步登录云厂商控制台,在实例列表里找到名为 pulumi-demo 的服务器,确认状态为运行中。
如果需要对公网访问,还要检查安全组是否放行了对应端口。

常见疑问

Pulumi 和 Terraform 有什么区别? 两者都是基础设施即代码工具,Terraform 使用 HCL 配置语言,Pulumi 支持用通用编程语言编写。
如果你团队已经熟悉 TypeScript 或 Python,Pulumi 的学习成本可能更低;
如果只需要简单的声明式配置,Terraform 的生态和资料也很成熟。

一定要用 Pulumi 云端保存状态吗? 不一定。
你可以用 S3、Azure Blob 等对象存储作为后端,也可以自建后端。
云端方式省去维护成本,自建方式更适合对数据位置有要求的场景。

免费账号够用吗? 个人学习和单机部署通常够用,但团队协作、审计等功能可能涉及付费计划。
具体额度和限制请以 Pulumi 官网当前说明为准。

到这里,你已经完成了服务器 Pulumi 配置教程的核心流程:安装客户端、配置凭据、初始化项目、用 TypeScript 创建云主机并验证结果。
建议先在测试账号中完整跑一遍,再根据实际业务调整实例规格、网络和安全组配置。

分享到:
上一篇
服务器SRE稳定性建设:从监控到故障演练的落地清单
下一篇
K8s集群DNS解析失败怎么排查:从Pod到CoreDNS完整步骤
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意