当前位置: 首页 > news >正文

Pulumi基础设施即代码实战:用Python和TypeScript管理云资源

Pulumi基础设施即代码实战:用Python/TypeScript管理云资源

作者:Crown_22 | AI Agent & Hermes Agent 桌面程序开发者

前言

Terraform 是基础设施即代码(IaC)领域的霸主,但它使用 HCL(HashiCorp Configuration Language)这种领域专用语言,学习曲线陡峭,调试困难,且无法复用常规编程语言的生态。

Pulumi提出了一个颠覆性的方案:用你熟悉的编程语言(Python、TypeScript、Go、C#)来定义云基础设施。没有 DSL,没有模板语法,就是真正的代码。这意味着你可以用for循环、if条件、函数、类、包管理器、测试框架——所有你已经会的东西。

本文基于真实项目经验,深入 Pulumi 的核心概念、常见踩坑和生产级实践。


第一章:Pulumi 核心概念

1.1 Pulumi vs Terraform:根本区别

# Terraform (HCL)resource"aws_s3_bucket""example"{bucket="my-bucket"tags={Environment="production"}}resource"aws_s3_bucket_versioning""example"{bucket=aws_s3_bucket.example.idversioning_configuration{status="Enabled"}}# Pulumi (Python)importpulumiimportpulumi_awsasaws bucket=aws.s3.Bucket("example",bucket="my-bucket",tags={"Environment":"production"},)versioning=aws.s3.BucketVersioningV2("example",bucket=bucket.id,versioning_configuration=aws.s3.BucketVersioningV2VersioningConfigurationArgs(status="Enabled",),)

核心差异

特性TerraformPulumi
语言HCL (DSL)Python/TS/Go/C#
状态管理本地/S3/Terraform CloudPulumi Cloud/S3/本地
循环/条件countfor_each、三元表达式原生语言语法
模块HCL modules原生包/类/函数
测试Terratest (Go)pytest/Jest/任何框架
Secret 管理Vault 集成内置 Secret 加密

1.2 第一个 Pulumi 项目

# 安装 Pulumi CLIcurl-fsSLhttps://get.pulumi.com|sh# 创建 Python 项目mkdirmy-infra&&cdmy-infra pulumi new aws-python# 项目结构# Pulumi.yaml - 项目配置# Pulumi.dev.yaml - 开发环境配置# __main__.py - 入口文件# requirements.txt - Python 依赖
# __main__.pyimportpulumiimportpulumi_awsasaws# 创建 VPCvpc=aws.ec2.Vpc("main-vpc",cidr_block="10.0.0.0/16",tags={"Name":"main-vpc"},)# 创建子网subnet=aws.ec2.Subnet("main-subnet",vpc_id=vpc.id,cidr_block="10.0.1.0/24",availability_zone="us-east-1a",tags={"Name":"main-subnet"},)# 导出资源 IDpulumi.export("vpc_id",vpc.id)pulumi.export("subnet_id",subnet.id)
# 部署pulumi up# 销毁pulumi destroy

第二章:Python Pulumi 实战

2.1 动态创建资源:循环与条件

importpulumiimportpulumi_awsasaws# 配置config=pulumi.Config()environment=config.require("environment")# dev/staging/prod# 根据环境决定实例大小instance_type={"dev":"t3.micro","staging":"t3.small","prod":"t3.large",}[environment]# 批量创建子网(HCL 的 for_each 很难做到这么灵活)availability_zones=["us-east-1a","us-east-1b","us-east-1c"]subnets=[]fori,azinenumerate(availability_zones):subnet=aws.ec2.Subnet(f"subnet-{i}",vpc_id=vpc.id,cidr_block=f"10.0.{i+1}.0/24",availability_zone=az,tags={"Name":f"subnet-{az}","Environment":environment,},)subnets.append(subnet)# 条件资源(仅在生产环境创建)ifenvironment=="prod":# 生产环境创建 NAT Gatewayeip=aws.ec2.Eip("nat-eip",domain="vpc")nat_gateway=aws.ec2.NatGateway("nat-gw",allocation_id=eip.id,subnet_id=subnets[0].id,)

2.2 组件资源(Component Resources)

Pulumi 的组件资源类似于 Terraform 的模块,但更灵活:

importpulumiimportpulumi_awsasawsclassVpcWithSubnets(pulumi.ComponentResource):"""可复用的 VPC 组件"""def__init__(self,name:str,cidr:str,azs:list[str],opts=None):super().__init__("custom:network:VpcWithSubnets",name,{}
http://www.jsqmd.com/news/879968/

相关文章:

  • TVA视觉智能体专栏(四):工业视觉最大痛点:换产必重训、环境必调参?TVA彻底根治
  • 今天不用就过期:Gemini深度研究模式2024Q3权限变更预警——3类高价值功能即将对免费用户关闭
  • 逐浪智能增长新时代:2026中国GEO公司权威推荐 - GEO优化
  • MongoDB8.0新特性实战:向量搜索、时序集合与分片集群优化
  • TVA视觉智能体专栏(三):零基础看懂TVA智能体:不是大模型噱头,是工业落地刚需技术
  • 揭秘DeepSeek千万级语料构建全流程:从原始网页采集到高质量token化,97.3%过滤率背后的硬核实践
  • GPU利用率不足38%?DeepSeek成本飙升的9个反模式,现在停用还来得及
  • 2026GEO公司哪家好:全球AI搜索流量迁移与大模型认知主权争夺战 - GEO优化
  • 为什么你的ChatGPT演讲稿总被说“像机器人”?深度拆解人类共情节奏建模与提示词嵌入技术
  • MinIO集群CVE-2023-28432漏洞深度解析与修复实战
  • 2026年广州GEO优化公司哪家好?深度评测:避开“AI投毒”陷阱,锁定长效增长操盘手 - GEO优化
  • 10分钟上手hcomm:昇腾NPU上的通信原语库
  • 【风电功率预测】【多变量输入单步预测】基于VMD-TCN-BiGRU的风电功率预测研究附Matlab代码
  • DLSS Swapper深度解析:如何实现跨平台游戏DLSS版本智能管理
  • ChatGPT生成内容同质化困局破局术:用故事化表达重构人机协作范式(仅限首批200位读者获取的叙事权重矩阵)
  • XSLFO 表格:深入解析与高效应用
  • 昇腾NPU的算子公共平台,实现M×N算子复用
  • 使用Hermes Agent配置自定义Taotoken模型提供商
  • 2026深圳GEO优化公司哪家好?深度测评:告别关键词排名,抢占AI搜索“首选答案” - GEO优化
  • 【优化调度】基于改进遗传算法求解带时间窗约束多卫星任务规划附Matlab代码
  • 如何解锁索尼相机的隐藏功能:OpenMemories-Tweak完整指南
  • 火盾声学材料:安庆地区防火吸音板综合解决方案,玻纤吸音板/演播厅空间吸声体/布艺软包吸音板,防火吸音板源头厂家有哪些 - 品牌推荐师
  • 基于神经网络的带输出三相逆变器模型预测控制LC滤波器附Matlab代码
  • JavaScript 比较
  • Sora 2输出黑边/裁切异常?GPU解码器与渲染管线冲突导致的16:9→4:3畸变真相(NVIDIA/AMD/Apple芯片差异对照表)
  • 2026年5月正规的保丽龙泡沫/泡沫包装厂家推荐丰县建鑫泡沫制品有限公司,环保低VOC材料改善室内空气质量 - 品牌鉴赏师
  • 【无功优化】基于改进教与学算法的配电网无功优化【IEEE33节点】附Matlab代码
  • Arkime全流量分析平台企业级部署与深度调优实战
  • 2026年上海GEO服务商哪家靠谱?合规性、技术实力与客户口碑多维对比 - GEO优化
  • 5月20号