普鲁米停车场提供者
管理 Pulumi 本地供应商 停车场页:1 自行托管,S3兼容的分布式对象存储系统,通过其Admin API.
它管理三种资源: Bucket (带有可选的全球别名,静态网站)
(a) 东道方和储存配额, Key (S3访问密钥),以及
BucketKeyPermission (a) 读取/写出/拥有 Key 编号 Bucket) (中文(简体) ). 组
拖带(节点、区域、容量、布局)已超出范围----见
已知的限制。 。 。 .
[注] 证相. 此提供者由AI编码代理( Claude) 所建端到端 在一个自主的,“vibe编码”的会话中,没有人审查实施情况 逐行排列。 这个项目是故意要靠自动测试 而不是手动审查置信性:对行政API客户端进行单位测试 每个资源创建/读取/更新/删除逻辑,加上一个真正的端到端套件 在多克建立实际的停车场集群并进行练习(包括真正的S3) 对象通过授权上传/下载) - 见 捐款额。 。 。 . 自己审查代码,然后信任它与生产数据.
安装
此软件包有几种语言版本。 只有Go和YAML SDK两个 使用此 repo 本身的示例和 E2E 测试(参见 已知的限制;其他则为 方便,但除此之外,该项目没有经过测试.
节点.js (JavaScript/TypeScript) (中文(简体) )
npm install @axnic/pulumi-garage
蟒
pip install pulumi_garage
走开
go get github.com/axnic/pulumi-garage/sdk/go/pulumi-garage
. NET 网络
dotnet add package Axnic.Pulumi.Garage
提供方二进制本身不需要上述任何一种 pulumi plugin install resource garage <version> (或引擎的自动分辨率)直接取出
从这repo的 GitHub 发布,没有
需要列入普鲁米登记册.
快速启动
通过堆栈配置将提供者指向您的 Garage 集群的 Admin API :
pulumi config set garage:endpoint http://localhost:3903
pulumi config set garage:adminToken <token> --secret
或 GARAGE_ADMIN_ENDPOINT 编号 : GARAGE_ADMIN_TOKEN 环境变量。 这个
提供者不会为您设置一个 Gardage 集群 - 见
(原始内容存档于2018-10-21). carshq.deuxfleurs.fr 用来设置一个
(单位:千美元)garage layout assign编号 :apply,或 --single-node 用于单个节点集群.
然后,一个最小的YAML程序(见 examples/yaml/Pulumi.yaml, (中文(简体) ),
或者说 examples/go/main.go 对等号:
name: garage-example-yaml
runtime: yaml
resources:
myKey:
type: garage:Key
properties:
name: my-app-key
myBucket:
type: garage:Bucket
properties:
globalAlias: my-app-bucket
myPermission:
type: garage:BucketKeyPermission
properties:
bucketId: ${myBucket.id}
accessKeyId: ${myKey.accessKeyId}
permissions:
read: true
write: true
outputs:
bucketId: ${myBucket.id}
accessKeyId: ${myKey.accessKeyId}
secretAccessKey: ${myKey.secretAccessKey}
配置
| 密钥 | Env var 倒计时 | 说明 |
|---|---|---|
garage:endpoint | GARAGE_ADMIN_ENDPOINT | Garage Admin API的基础URL,例如:. "http://localhost:3903"。 。 。 . |
garage:adminToken (秘诀) | GARAGE_ADMIN_TOKEN | 对停车场管理员API授权的无记名证. |
garage:s3Endpoint | GARAGE_S3_ENDPOINT | 停车场S3 API的基础URL,例如:. "http://localhost:3900"。仅需要用于 Bucket是因为 lifecycleRules。 。 。 . |
garage:s3Region | GARAGE_S3_REGION | S3区域签署请求. 默认为 "garage" 如果未设置. |
garage:accessKeyId | GARAGE_S3_ACCESS_KEY_ID | 与停车场S3 API相对应的登录密钥ID授权. 仅需 lifecycleRules。 。 。 . |
garage:secretAccessKey (秘诀) | GARAGE_S3_SECRET_ACCESS_KEY | 密钥配对 accessKeyId。仅需要用于 lifecycleRules。 。 。 . |
endpoint编号 :adminToken 以某种方式 -- -- 提供者未能
如果配置密钥及其内嵌 var 后退没有设定, 则配置 。 S3场是
可选且仅需管理 Bucket是因为 lifecycleRules (生命周期规则是:
只能通过 Garce 的 S3 API , 而不是它的管理员 API ; 如果您设置了其中之一
s3Endpoint编号 :accessKeyId编号 :secretAccessKey,你必须设置所有三个.
兼容性
这家提供商与Garge's Admin API v2,Garge v2.0.0中引入的Garge v. 每个 下面的版本根据完整的实例程序生命周期进行测试(创建/更新/删除) 加上一个真实的 S3 对象上传/下载) 在自己的 CI 工作流程中,所以它的徽章反映了 单是这个版本,而不是一个集合:
| 停车场版本 | 状态 |
|---|---|
| 页:1 | |
| 页:1 | |
| 页:1 | |
| 页:1 | |
| 页:1 |
每个工作流程.github/workflows/merge_group,pull_request,push.e2e-v2.*.yaml)为
中央可重复使用的 E2E 工作流程的薄调取器 axnic/.github 与该版本绑定(新版本由repo的E2E同步工作流程所添加,该工作流程打开了PR) -
GitHub 动作状态徽章是每个工作流程文件,而不是每个程序腿,这就是为什么
这是五个小文件而不是一个 strategy.matrix 任务. --single-node (单位:千美元)
快速布局- bootstrap path)只存在于从 Garage v2.3.0 上,所以
docker-compose.yml 财务报告和审定财务报表 scripts/bootstrap-garage.sh 总是使用手册
layout assign编号 :apply 反之,这五只靴子都一样
各个版本.
已知的限制
这是一个v1,个人/小型org供应商 - 范围有意缩小:
- 没有集群布局管理. 指定节点、区和能力不是
由这个供应商管理,它是一个一发的靴子陷阱操作 不适合
净入一能的IaC. Bootstrap你自己的停车场集群(如:.
garage layout assign编号 :apply,或--single-node在停车场v2.3.0+)之前 指此供养. Bucket只支持单一的全局别名. 无本地( 每键) 化名, 不 多个全球别名.Key全球createBucket权限不是模拟故意的 故意的 不够可靠,没有进一步验证 API.- 删除非空
Bucket失败. 这个镜像是Garage(和S3的)自己的原生 行为;是故意的,不是虫子. - CI/E2E中只执行YAML和Go等例程序. 节点,蟒蛇, 和点网 SDK 生成并发布(参见 安装不过 不包括雷波的样本程序 或生命周期测试.
- 没有Java/Maven SDK. 普鲁米对爪哇的支持太少了 无法证明 额外设置成本(Sonatype命名空间验证,GPG签名发布);节点, python, dotnet,并去SDK覆盖生态系统的实际使用.
参考文献
这家供货商没有在 Pulumi 书记官处, (中文(简体) ),
所以没有 pulumi.com/registry/packages/garage 链接生成的页面,
每个资源 API 文档。 在此之前:
- 这个 参考 SDK 打开 pkg.go.dev (英语) 由普鲁米书记处制作的同样图案说明产生 是最完整的逐个字段的参考文献(在第一个字段之后使用) 标记放出 - 见 相关内容) (中文(简体) ).
- 这个
Quickstart财务报告和审定财务报表Configuration以上各节 涵盖三个资源和提供者配置结束;基本方案是provider/cmd/pulumi-resource-garage/schema.json(生成而非手持也.
捐款
见 捐款额 用于构建提供者,测试层 (包括如何在本地运行 E2E 套件),生成 SDKs, 和去除相机 设置。 也见我们的 行为守则。 。 。 .