Skip to main content

Zerops for Pulumi

Deploy your application to Zerops using Python, Go, C#, Java, TypeScript or YAML. Keep application infrastructure alongside your code, preview changes, and deploy with pulumi up.

Start with zerops-app / WebApp: one component creates a project, an application service, an optional PostgreSQL database, a deployment and a public URL. Use zerops primitives when you need direct control over services, storage or networking. The primitive provider bridges the Zerops Terraform provider; you do not need Terraform installed.

Start in your language

Python · Go · C#/.NET · Java · TypeScript · YAML

Each starter deploys the same small Python web application. The language you use to describe infrastructure does not dictate your application's runtime. Only your chosen infrastructure language and the Pulumi CLI are needed locally; Zerops builds and runs the application.

For example, after choosing a state backend:

pulumi new https://github.com/zeropsio/pulumi-zerops/tree/v0.1.1/templates/zerops-python
pulumi config set --secret zerops:token
pulumi up
pulumi stack output url

The template also prompts for a secret Zerops token and an explicit appName. PostgreSQL is off initially; enable it with pulumi config set database true, then run pulumi up again. Review costs before deploying; resources run until you remove them. Run pulumi destroy when finished (this deletes application and database data).

Packages and compatibility

Both packages are version 0.1.1. The component SDK brings in the primitive SDK as a dependency.

Language zerops primitives zerops-app component
Python PyPI pulumi-zerops; import pulumi_zerops PyPI pulumi-zerops-app; import pulumi_zerops_app
Go module github.com/zeropsio/pulumi-zerops/sdk; import github.com/zeropsio/pulumi-zerops/sdk/go/zerops module github.com/zeropsio/pulumi-zerops/sdk-app; import github.com/zeropsio/pulumi-zerops/sdk-app/go/zeropsapp
C# NuGet and namespace Zerops.Pulumi NuGet and namespace Zerops.Pulumi.App
Java Maven io.zerops:pulumi; package io.zerops.zerops Maven io.zerops:pulumi-app; package io.zerops.zeropsapp
TypeScript / Node.js npm @zerops/pulumi npm @zerops/pulumi-app
YAML plugin zerops; e.g. zerops:index:Project plugin zerops-app; zerops-app:index:WebApp

Go modules use release tags sdk/v0.1.1 and sdk-app/v0.1.1; use @v0.1.1 in go get, not the tag's directory prefix. The replace directives in components/go.mod and sdk-app/go.mod are for monorepo development. Go ignores dependency modules' replacements, so consumers never inherit them.

Pulumi provider Terraform provider Terraform bridge Pulumi CLI
pulumi-zerops 0.1.1 terraform-provider-zerops v0.1.2 v3.142.0 >= 3.x; tested with 3.273.0

Python requires >= 3.10. Go modules currently require Go >= 1.26.6. The .NET SDK targets net6.0 and works with .NET 8 and 10; templates target .NET 8. Java SDKs compile with JDK 21 and emit Java 11-compatible bytecode; examples and templates target Java 17. Node.js 22 LTS is the tested Node runtime.

What WebApp creates

A LIGHT project with an explicit name, a single-container runtime service, optional PostgreSQL, environment variables, a directory deployment, and public subdomain access after deployment. It does not allocate dedicated IPv4. The optional default database is postgresql:single@16, with a 2 GB minimum disk. This is a small, non-HA starting point, not a free tier or a production availability promise. For HA, explicitly set databaseType to postgresql:ha@16; availability and price differ. See Zerops pricing.

Database connections use server-side references: DATABASE_URL, DB_HOST, DB_USER, DB_PASSWORD, and DB_NAME reference database service values; DB_PORT is the literal 5432. The component never reads resolved credentials back. It exports connection variable names, not passwords. See the component reference.

Deployment and secrets

  • WebApp.source and primitive ServiceDeploy.sourceDir are directory paths, not Pulumi archives. Relative paths resolve from the Pulumi program directory.
  • The directory is uploaded as-is except every .git directory. Curate app/: do not include secrets, .env, node_modules, .venv, or build caches. .gitignore is not an upload filter.
  • Source changes replace ServiceDeploy, meaning a new deployment. Destroying only that resource does not roll back the app. Destroying its service/project cleans up the environment.
  • Secret configuration and secret resource values are encrypted in Pulumi state, not omitted from it. Protect state backups and your backend's encryption keys/passphrase. Do not export secrets as ordinary stack outputs.
  • Zerops builds asynchronously. If deployment fails, open the service's build log in the Zerops GUI for the actual build error.

Primitive resource map

The schema contains 19 resources. The short YAML forms below correspond to canonical tokens such as zerops:index/project:Project.

Resource Short token
Integration token zerops:index:IntegrationToken
Object storage zerops:index:ObjectStorage
Project zerops:index:Project
Dedicated IPv4 zerops:index:ProjectDedicatedIpv4
Project environment variable zerops:index:ProjectEnv
Project import zerops:index:ProjectImport
L7 balancer configuration zerops:index:ProjectL7BalancerConfig
Prometheus configuration zerops:index:ProjectPrometheusConfig
Remote logging zerops:index:ProjectRemoteLogging
VPN peer zerops:index:ProjectVpnPeer
Public HTTP routing zerops:index:PublicHttpRouting
Public port routing zerops:index:PublicPortRouting
Service zerops:index:Service
Backup configuration zerops:index:ServiceBackupConfig
Deployment zerops:index:ServiceDeploy
Service environment variable zerops:index:ServiceEnv
Git integration zerops:index:ServiceGitIntegration
Restart zerops:index:ServiceRestart
Subdomain access zerops:index:ServiceSubdomainAccess

There are 9 data functions, plus the bridge's provider-bound terraformConfig method (not a Zerops lookup).

Lookup Canonical function token
Locations zerops:index/getLocations:getLocations
Organization zerops:index/getOrganization:getOrganization
Project zerops:index/getProject:getProject
Project export zerops:index/getProjectExport:getProjectExport
Projects zerops:index/getProjects:getProjects
Regions zerops:index/getRegions:getRegions
Service zerops:index/getService:getService
Service environment variables zerops:index/getServiceEnvVars:getServiceEnvVars
Service types zerops:index/getServiceTypes:getServiceTypes

Provider configuration

Pulumi key Environment fallback Default
zerops:token (secret) ZEROPS_TOKEN Required
zerops:endpoint ZEROPS_ENDPOINT Production Prague API
zerops:organizationId ZEROPS_ORGANIZATION_ID Discovered for a single membership
zerops:postgresqlMinDiskGb ZEROPS_POSTGRESQL_MIN_DISK_GB 2 GB
zerops:routingForceSync ZEROPS_ROUTING_FORCE_SYNC false
Environment only (no Pulumi key) ZEROPS_CLICKHOUSE_MIN_RAM_GB 0.375 GB
Environment only (no Pulumi key) ZEROPS_ELASTICSEARCH_MIN_RAM_GB 2 GB

Managed-service floors are applied at preview and reject smaller configured values. RAM overrides must be finite positive numbers with at most three decimal places. Dual-mode managed types require an explicit :single@ or :ha@ mode. When upgrading existing shorthand state, set type to the qualified value already recorded in base to avoid replacement; choosing the other mode replaces the service.

More information

Metadata

Release files for pulumi-zerops 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pulumi-zerops 0.1.1
File Size Uploaded Provenance Actions
pulumi_zerops-0.1.1.tar.gz 74.4 kB Without provenance Details for pulumi_zerops-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pulumi-zerops 0.1.1
File Interpreter ABI Platform Actions
pulumi_zerops-0.1.1-py3-none-any.whl Python 3 none any Details for pulumi_zerops-0.1.1-py3-none-any.whl

Total release size: 182.5 kB

Release files / pulumi_zerops-0.1.1.tar.gz

Download URL pulumi_zerops-0.1.1.tar.gz
Size 74.4 kB
Tags Source
SHA-256 checksum
How to use checksums
0436086f44e4eebec6c40dcee55a11b0829b0aff52a3cf500a00b1ef1680e1f3
BLAKE2b-256 checksum
How to use checksums
cf640c014ddd82049e044e96f5b5b4ce22a41df6a473682d51de7d5b85f68d14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pulumi_zerops-0.1.1-py3-none-any.whl

Download URL pulumi_zerops-0.1.1-py3-none-any.whl
Size 108.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a738f37a7e4efb8e1d116a8bf035454d10c97299c8270c3fd502359fc287e5c1
BLAKE2b-256 checksum
How to use checksums
0ec05cc013d156e8b4b71602e9de0bf5cf2d1fae22643c9636445021914c7878
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for pulumi-zerops 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page