Infrastructure docs, IaC scripts, skills energy (VOLTTRON, EnergyPlus, OpenStudio, BuildingGym, OSeMOSYS)

This commit is contained in:
Eric F
2026-06-10 12:09:00 -04:00
parent a0577ed17c
commit 84667c7126
4 changed files with 430 additions and 0 deletions

59
iac/ansible/playbook.yml Normal file
View File

@@ -0,0 +1,59 @@
# Cariflex EMS - Ansible Playbook
# Deploys the full Cariflex stack to a target host
---
- name: Deploy Cariflex EMS
hosts: cariflex
become: yes
vars:
cariflex_version: "{{ lookup('env', 'CARIFLEX_VERSION') | default('latest', true) }}"
deploy_env: "{{ lookup('env', 'DEPLOY_ENV') | default('production', true) }}"
pre_tasks:
- name: Check minimum requirements
assert:
that:
- ansible_memtotal_mb >= 4096
- ansible_processor_vcpus >= 2
fail_msg: "Host does not meet minimum requirements (4GB RAM, 2 CPUs)"
roles:
- role: common
tags: [common]
- role: docker
tags: [docker]
- role: traefik
tags: [traefik]
- role: postgresql
tags: [database]
- role: redis
tags: [cache]
- role: flexmeasures
tags: [app]
- role: openadr
tags: [openadr]
- role: grafana
tags: [monitoring]
- role: backup
tags: [backup]
post_tasks:
- name: Verify deployment
uri:
url: "https://{{ cariflex_domain }}/api/v3_0/sensors"
status_code: 200
register: health_check
retries: 10
delay: 5
until: health_check.status == 200
- name: Display deployment info
debug:
msg: |
==========================================
Cariflex EMS Deployed Successfully!
Environment: {{ deploy_env }}
URL: https://{{ cariflex_domain }}
Grafana: https://{{ grafana_domain }}
Version: {{ cariflex_version }}
==========================================

View File

@@ -0,0 +1,85 @@
# Cariflex EMS - Environment Configuration
## Development Environment
```bash
# .env.dev
DEPLOY_ENV=dev
CARIFLEX_VERSION=dev
CARIFLEX_DOMAIN=cariflex.dev.local
GRAFANA_DOMAIN=grafana.dev.local
FM_SECRET_KEY=dev-secret-key-change-me
FM_DB_PASSWORD=devpassword
REDIS_PASSWORD=devpassword
```
### Deploy to Dev
```bash
cd /home/eric/cariflex/iac
ansible-playbook playbook.yml -i environments/dev/inventory --extra-vars "deploy_env=dev"
```
## Test Environment
```bash
# .env.test
DEPLOY_ENV=test
CARIFLEX_VERSION=test
CARIFLEX_DOMAIN=cariflex.test.digitribe.fr
GRAFANA_DOMAIN=grafana.test.digitribe.fr
FM_SECRET_KEY={{ vault_fm_secret_key }}
FM_DB_PASSWORD={{ vault_fm_db_password }}
REDIS_PASSWORD={{ vault_redis_password }}
```
### Deploy to Test
```bash
cd /home/eric/cariflex/iac
ansible-playbook playbook.yml -i environments/test/inventory --extra-vars "deploy_env=test" --ask-vault-pass
```
## Production Environment
```bash
# .env.prod
DEPLOY_ENV=production
CARIFLEX_VERSION=latest
CARIFLEX_DOMAIN=cariflex.digitribe.fr
GRAFANA_DOMAIN=grafana.digitribe.fr
FM_SECRET_KEY={{ vault_fm_secret_key }}
FM_DB_PASSWORD={{ vault_fm_db_password }}
REDIS_PASSWORD={{ vault_redis_password }}
```
### Deploy to Production
```bash
cd /home/eric/cariflex/iac
ansible-playbook playbook.yml -i environments/prod/inventory --extra-vars "deploy_env=production" --ask-vault-pass
```
## Docker Compose Override Files
Each environment has its own override file:
- `docker-compose.dev.yml` - Development (debug mode, local volumes)
- `docker-compose.test.yml` - Testing (test data, isolated network)
- `docker-compose.prod.yml` - Production (optimized, SSL, backups)
## Kubernetes Deployment
For K8s deployment, see `k8s/` directory:
- `k8s/namespace.yaml` - Namespace creation
- `k8s/configmap.yaml` - Configuration
- `k8s/secrets.yaml` - Secrets (encrypted)
- `k8s/deployments/` - Application deployments
- `k8s/services/` - Service definitions
- `k8s/ingress/` - Ingress rules
### Deploy to K8s
```bash
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/configmap.yaml
kubectl apply -f k8s/secrets.yaml
kubectl apply -f k8s/deployments/
kubectl apply -f k8s/services/
kubectl apply -f k8s/ingress/
```