https://github.com/adaliszk/infrastructure
Templates and Helper packages for Pulumi-based Infrastructure, with the help of GitLab, Ansible, and Flux.
https://github.com/adaliszk/infrastructure
ansible docker flux infrastructure kubernetes pulumi
Last synced: 5 months ago
JSON representation
Templates and Helper packages for Pulumi-based Infrastructure, with the help of GitLab, Ansible, and Flux.
- Host: GitHub
- URL: https://github.com/adaliszk/infrastructure
- Owner: adaliszk
- License: bsd-3-clause
- Created: 2021-11-20T23:30:54.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-03-29T12:36:37.000Z (over 2 years ago)
- Last Synced: 2026-01-24T01:24:22.822Z (6 months ago)
- Topics: ansible, docker, flux, infrastructure, kubernetes, pulumi
- Language: TypeScript
- Homepage:
- Size: 12.7 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
_Infrastructure configuration and setup via GitLab, Ansible, Flux, and Pulumi_
# Infrastructure
With the many various requirements over the year, I have been fine-tuning, evolving my own setup to deploy environments
and applications. This repository contains my frequently used abstractions and configurations alongside of a few tools
and framework extensions that aims to aid efficient workflows.
The idea here is to provide modular packages that can deploy a whole environment stack for a particular application
or environment. Separate each use-case into their scope and allow customisation through an exposed configuration.
Essentially, creating a deployment ecosystem like how vite creates a compiler ecosystem.
Pulumi enables these setups to be packaged up and shared through NPM, PyPi,
and [eventually Crates](https://github.com/pulumi/pulumi/issues/11882). It also allows
greater flexibility as the deployments can be manipulated based on common programming structures while keeping it stable
with deep and accurate testing support.
## Prerequisites
- [**pnpm**](https://pnpm.io) for managing the workspaces within the project
- [**ansible**](https://docs.ansible.com/ansible) for server configurations
- [**flux**](https://fluxcd.io/flux/installation) as gitops automation for all environments
- [**docker**](https://docs.docker.com/get-docker) for building custom images
- [**pulumi**](https://www.pulumi.com/docs/get-started/install) for deployment automation
- [**dagger**](https://dagger.io) for automation runner
## Structure
- **/ansible**: ansible playbooks for bootstrapping servers
- **/environments**: environment configurations for shared resources
- **/images**: unofficial docker images to help cloud environments
- **/packages**: deployment packages to orchestrate environments
## GitOps
Currently, there are four layers of automation within the project:
1. Flux CD: synchronise the baseline setup to all clusters
2. Pulumi: deployment modules and cluster configurations to be executed
3. GitLab CI: automation tool for the whole code lifecycle
# Images and Charts
| Name | Docker | GitHub | Quay | Issues |
| :----------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- | :----- | :--- | :----- |
| `adaliszk/duplicity` | - | - | - | - |
| [`adaliszk/pocketbase`](images/pocketbase) | [](https://hub.docker.com/r/adaliszk/pocketbase) | - | - | - |
# Packages
| Name | NPM | Issues |
| :------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`@adaliszk/pulumi`](packages/pulumi) | [](https://www.npmjs.com/package/@adaliszk/pulumi) | [](https://github.com/adaliszk/infrastructure/labels/pulumi) |
| [`@adaliszk/opsx`](packages/opsx) | [](https://www.npmjs.com/package/@adaliszk/opsx) | [](https://github.com/adaliszk/infrastructure/labels/opsx) |
# Contributions
While I'm always open to Pull-Requests, this project is mainly to store examples, and showcase them.
Feel free to open a [discussion](https://github.com/adaliszk/infrastructure/discussions) if you have
any questions or requests.