@tag1consulting/pulumi-lagoon
v0.5.1
Published
Manage Lagoon hosting platform resources as infrastructure-as-code.
Downloads
356
Maintainers
Readme
Pulumi Lagoon Provider — Node.js SDK
A Pulumi provider for managing Lagoon resources as infrastructure-as-code.
Installation
npm install @tag1consulting/pulumi-lagoonConfiguration
pulumi config set lagoon:apiUrl https://api.lagoon.example.com/graphql
pulumi config set --secret lagoon:token YOUR_TOKENOr via environment variables:
export LAGOON_API_URL=https://api.lagoon.example.com/graphql
export LAGOON_TOKEN=YOUR_TOKENSupported Resources
| Resource | Description |
|----------|-------------|
| Project | Lagoon projects (applications/sites) |
| Environment | Environments (branch/PR deployments) |
| Variable | Project and environment variables |
| DeployTarget | Kubernetes cluster deploy targets |
| DeployTargetConfig | Branch-pattern routing to deploy targets |
| NotificationSlack | Slack deployment notifications |
| NotificationRocketChat | RocketChat deployment notifications |
| NotificationEmail | Email deployment notifications |
| NotificationMicrosoftTeams | Microsoft Teams deployment notifications |
| ProjectNotification | Link notifications to projects |
| Task | Advanced task definitions (command and image types) |
| Group | Groups for organizing projects and users |
| Route | API-managed routes (requires Lagoon v2.29.0+) |
| ProjectAutogeneratedRouteConfig | Autogenerated route settings at project level |
| EnvironmentAutogeneratedRouteConfig | Autogenerated route settings at environment level |
Usage
import * as pulumi from "@pulumi/pulumi";
import * as lagoon from "@tag1consulting/pulumi-lagoon";
const project = new lagoon.Project("my-site", {
name: "my-drupal-site",
gitUrl: "[email protected]:org/repo.git",
deploytargetId: 1,
productionEnvironment: "main",
branches: "^(main|develop|stage)$",
});
const prodEnv = new lagoon.Environment("production", {
name: "main",
projectId: project.lagoonId,
deployType: "branch",
deployBaseRef: "main",
environmentType: "production",
});
const dbConfig = new lagoon.Variable("db-host", {
name: "DATABASE_HOST",
value: "mysql.production.example.com",
projectId: project.lagoonId,
environmentId: prodEnv.lagoonId,
scope: "runtime",
});
const team = new lagoon.Group("my-team", {
name: "my-team",
});
export const projectId = project.lagoonId;Importing Existing Resources
pulumi import lagoon:lagoon:Project my-site 123
pulumi import lagoon:lagoon:Environment prod-env 123:main
pulumi import lagoon:lagoon:Variable api-key 123::API_KEY
pulumi import lagoon:lagoon:Group my-team my-teamMulti-Language Support
This provider also has SDKs for Python, Go, and .NET/C#.
Documentation
License
Apache License 2.0
