This repository contains the Pulumi infrastructure code for setting up the EOEPCA+ platform on OpenStack (primarily for development and testing).
Make sure you have the following installed:
-
Clone the Repository
git clone https://github.com/EOEPCA/eoepca-plus cd deploy
-
Install Dependencies
cd infra/ python -m venv venv source venv/bin/activate pip install -r requirements.txt
-
Set Up Pulumi Locally
pulumi login --local
-
Configure OpenStack Provider
Either source your OpenStack RC file or export the required environment variables. See Openstack documentation for openrc file generation, you should be able to download this file through the CloudFerro portal.source eoepca-openrc-2f.sh
-
Create a New Pulumi Stack
pulumi stack init dev
-
Configure Stack Variables
-
Copy
Pulumi.example.yaml
toPulumi.dev.yaml
(or edit the example file directly) and update all the required values to match your environment. Key settings inPulumi.dev.yaml
(for theinfra
stack) include:domainName
: The domain name for your platform (e.g.eoepca.org
).loadBalancerFloatingIPID
: An existing Floating IP ID for your load balancer. We chose to configure this outside of Pulumi, otherwise the Floating IP would be changed every time the stack is updated.externalNetworkID
: Your external (public) network ID in OpenStack. Configure this in the dashboard.
-
If you also plan to deploy resources in
k8s-resources
, you'll need to edit (or create)Pulumi.dev.yaml
within that directory as well to set values such as:nfsServerIP
: The IP address of the NFS server created byinfra
.SSOClientID
,SSOClientSecret
,SSOOrg
andSSOTeam
: GitHub OAuth client credentials for ArgoCD SSO. See this guide for SSO Setup instructions.
-
-
Deploy the Stack
pulumi up
-
(Optional) Deploy Kubernetes Resources
If you also want to deploy the Kubernetes resources found underk8s-resources/
, repeat similar steps in that directory (create a new stack, configure, and runpulumi up
).
infra/
: Contains the core infrastructure components such as Bastion, Network, Load Balancer, and Nodes.k8s-resources/
: Contains Kubernetes resources (e.g., ArgoCD, Cert Manager, Ingress NGINX).
This project is licensed under the Apache 2.0 license.
Feel free to contribute by submitting issues and pull requests.