{"id":24041844,"url":"https://github.com/meteorops/pulumi-boilerplate","last_synced_at":"2026-05-04T15:40:58.532Z","repository":{"id":223506671,"uuid":"757371698","full_name":"MeteorOps/pulumi-boilerplate","owner":"MeteorOps","description":"A full DevOps boilerplate for startups","archived":false,"fork":false,"pushed_at":"2024-02-23T22:04:25.000Z","size":151,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-26T08:17:45.327Z","etag":null,"topics":["aws","boilerplates","kubernetes","pulumi"],"latest_commit_sha":null,"homepage":"https://meteorops.com/technologies/pulumi","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MeteorOps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-14T11:07:48.000Z","updated_at":"2024-02-24T12:47:25.000Z","dependencies_parsed_at":"2025-01-10T06:45:34.799Z","dependency_job_id":null,"html_url":"https://github.com/MeteorOps/pulumi-boilerplate","commit_stats":null,"previous_names":["meteorops/pulumi-boilerplate"],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fpulumi-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fpulumi-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fpulumi-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fpulumi-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MeteorOps","download_url":"https://codeload.github.com/MeteorOps/pulumi-boilerplate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240814857,"owners_count":19861958,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","boilerplates","kubernetes","pulumi"],"created_at":"2025-01-08T22:12:49.656Z","updated_at":"2026-05-04T15:40:58.457Z","avatar_url":"https://github.com/MeteorOps.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pulumi-boilerplate\nA pulumi-based DevOps boilerplate for startup founders\n\nNOTE: This repository is an alpha version of this project, and is expected to go through design and implementation changes as it evolves to support community use-cases.\n\n# Architecture\n![MeteorOps Pulumi Boilerplate](https://media.licdn.com/dms/image/D4D22AQFxMkiD9ucemw/feedshare-shrink_2048_1536/0/1706096119175?e=1710979200\u0026v=beta\u0026t=CqaJl08Mq7aicJQnCkniAfX_4T8t9dVZebZaq_mvjTE)\n\n## Rational\nStartups regret similar things as they scale up:\n - Creating stuff manually, so it's hard to create new environments for any purpose\n - An environment deployment is costly and time-consuming, so giving up on deploying environments for testing purposes\n - For either of the reasons above, recovering from a recovering from production incidents is harder\n\nThe result of the above is neglect, and a system that's hard to maintain and develop.\n\n## Goals\n - Minimize regret around DevOps-related decisions\n - Make it easy to spin-up a full environment with [\"One-Click\"](https://www.meteorops.com/blog/one-click-environment-the-ultimate-devops-goal)\n - Save costs and time by deploying multiple environments on the same \"Base\"\n\n ## Implementation\n - The `base` Pulumi Project provisions all of the resources that can be shared with multiple environments (e.g., VPC, EKS Cluster)\n - The `apps` Pulumi Project deploys all of the env-specific resources on top of the `base` resources\n\n## Tech Stack\n - Pulumi (Typescript): Provision \u0026 deploy with idempotent code maintainable by developers\n - AWS: Manage the system in a cloud with a wide set of products, big community, and a predictable interface\n - Kubernetes: Orchestrate workloads on a platform that will support your evolving needs\n\n# Prerequisites\n### Versions\n```\nawscli 1.32.43\nhelm 3.14.1\nkubectl 1.29.2\npulumi 3.106.0\nnvm 0.38.0\nnode 21.6.2 (npm 10.2.4)\n```\n\n### AWS\n - Create an AWS account\n - Set the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY env vars\n - Install the AWS CLI\n\n### Pulumi\n - Create a Pulumi account\n - Create a Pulumi Organization\n - Replace the string \"meteorops\" with your organization's name in the `deploy.sh` and `pulumi/apps/Pulumi.dev.yaml` files\n - Install the Pulumi CLI\n - Run `pulumi login` into your Pulumi account\n \n### NodeJS\n - Install NodeJS\n - Install the NPM CLI\n\n# Usage\n### Deploy\n - Deploy an environment by running `./deploy.sh \u003cbase-env-name\u003e \u003capps-env-name\u003e`\n### Destroy\n - Destroy an apps environment by running `./destroy.sh \u003capps-env-name\u003e`\n - Destroy a base environment by running `pulumi destroy -C pulumi/base -s \u003cbase-env-name\u003e --refresh`\n### Examples\n```\n# Deploy the full DEV environment (base + apps)\n./deploy.sh dev dev\n\n# Deploy a PR environment\n./deploy.sh dev pr-123\n\n# Destroy the PR environment\n./destroy.sh pr-123\n\n# Destroy the DEV base environment\npulumi destroy -C pulumi/base dev --refresh\n```\n\n# Request Fixes, Features\nIf you stumble a bug, or need a new feature, [open an issue here](https://github.com/MeteorOps/pulumi-boilerplate/issues).\nPlease be as descriptive as you can with your request.\n\n# Contributing\nIt's straight forward:\n1. Fork the repo\n2. Checkout to a branch\n3. Modify and test\n4. Open a Pull Request\n\n# TODO\n - [] Input validation in deploy/destroy scripts\n - [] Support Pulumi secrets on PR envs\n - [] Create a reusable app Helm chart\n - [] Deploy Prometheus + Grafana\n - [] Manage deployments with ArgoCD\n - [] Support NodeGroups with Spot Instances\n - [] Support NodeGroups with On-Demand Instances\n - [] Support using External-Secrets\n - [] Support adding a RDS to base stacks\n - [] Support NginX ingresses\n - [] Add Karpenter\n - [] Add HPA/VPA\n - [] Support IAM Roles for K8s workloads\n - [] Refactor components into Pulumi components\n # Commercial Support\n If you're thinking about implementing this boilerplate for your startup and wish to get assistance, [schedule a consultation with us on our website](https://meteorops.com/technologies/pulumi).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeteorops%2Fpulumi-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeteorops%2Fpulumi-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeteorops%2Fpulumi-boilerplate/lists"}