Loading .ansible/.lock 0 → 100644 +0 −0 Empty file added. .vscode/settings.json +3 −1 Original line number Diff line number Diff line { "ansible.python.interpreterPath": "/bin/python" "ansible.python.interpreterPath": "./venv/bin/python", "ansible.ansibleLint.path": "./venv/bin/ansible-lint", "python-envs.pythonProjects": [] } No newline at end of file README.md +49 −28 Original line number Diff line number Diff line # Operator Platform Automation This repository contains the automation for deploying the Operator Platform. ## Documentation Full documentation is available in the `docs/` directory and can be viewed in https://op-automation-b0b7e6.pages.i2cat.net ### Running Documentation Locally 1. Create and activate the documentation virtual environment: ```bash python3 -m venv docs/.venv source docs/.venv/bin/activate ``` 2. Install dependencies: ```bash pip install -r docs/requirements.txt ``` 3. Serve the documentation: ```bash mkdocs serve ``` 4. Open http://127.0.0.1:8000 in your browser. ansible==13.0.0 ansible-compat==25.12.0 ansible-core==2.20.0 ansible-lint==25.12.1 attrs==25.4.0 black==25.12.0 bracex==2.6 cachetools==6.2.2 certifi==2025.11.12 cffi==2.0.0 charset-normalizer==3.4.4 click==8.3.1 cryptography==46.0.3 distro==1.9.0 docker==7.1.0 durationpy==0.10 filelock==3.20.1 google-auth==2.43.0 idna==3.11 Jinja2==3.1.6 jsonschema==4.25.1 jsonschema-specifications==2025.9.1 kubernetes==34.1.0 MarkupSafe==3.0.3 mypy_extensions==1.1.0 oauthlib==3.3.1 packaging==25.0 pathspec==0.12.1 platformdirs==4.5.1 pyasn1==0.6.1 pyasn1_modules==0.4.2 pycparser==2.23 python-dateutil==2.9.0.post0 pytokens==0.3.0 PyYAML==6.0.3 referencing==0.37.0 requests==2.32.5 requests-oauthlib==2.0.0 resolvelib==1.2.1 rpds-py==0.30.0 rsa==4.9.1 ruamel.yaml==0.18.16 ruamel.yaml.clib==0.2.15 six==1.17.0 subprocess-tee==0.4.2 urllib3==2.3.0 wcmatch==10.1 websocket-client==1.9.0 yamllint==1.37.1 ansible/automation/1-kind-cluster/kind-config.yaml +30 −0 Original line number Diff line number Diff line Loading @@ -13,26 +13,56 @@ nodes: - "127.0.0.1" - "10.69.222.3" extraPortMappings: # API Server - containerPort: 6443 hostPort: 6443 listenAddress: "0.0.0.0" protocol: TCP # Prometheus - containerPort: 30090 hostPort: 30090 listenAddress: "0.0.0.0" protocol: TCP # Grafana - containerPort: 30091 hostPort: 30091 listenAddress: "0.0.0.0" protocol: TCP # Alertmanager - containerPort: 30092 hostPort: 30092 listenAddress: "0.0.0.0" protocol: TCP # i2edge - containerPort: 30769 hostPort: 30769 listenAddress: "0.0.0.0" protocol: TCP # Federation Manager - containerPort: 30989 hostPort: 30989 listenAddress: "0.0.0.0" protocol: TCP # Homer Dashboard - containerPort: 30088 hostPort: 30088 listenAddress: "0.0.0.0" protocol: TCP # Remote Federation Manager - containerPort: 30990 hostPort: 30990 listenAddress: "0.0.0.0" protocol: TCP # Remote Keycloak - containerPort: 30083 hostPort: 30083 listenAddress: "0.0.0.0" protocol: TCP # Remote MongoDB - containerPort: 30018 hostPort: 30018 listenAddress: "0.0.0.0" protocol: TCP - role: worker - role: worker containerdConfigPatches: Loading ansible/group_vars/all.yml +58 −8 Original line number Diff line number Diff line Loading @@ -27,41 +27,91 @@ harbor_http_nodeport: 30002 harbor_https_nodeport: 30003 i2edge_nodeport: 30769 artefact_manager_nodeport: 30080 federation_manager_nodeport: 30989 keycloak_nodeport: 30082 homer_nodeport: 30088 mongodb_nodeport: 30017 remote_federation_manager_nodeport: 30990 remote_keycloak_nodeport: 30083 remote_mongodb_nodeport: 30018 # Port mappings - using parameterized NodePorts to avoid duplication port_mappings: - container_port: "{{ api_server_port }}" - name: "API Server" container_port: "{{ api_server_port }}" host_port: "{{ api_server_port }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ prometheus_nodeport }}" - name: "Prometheus" container_port: "{{ prometheus_nodeport }}" host_port: "{{ prometheus_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ grafana_nodeport }}" - name: "Grafana" container_port: "{{ grafana_nodeport }}" host_port: "{{ grafana_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ alertmanager_nodeport }}" - name: "Alertmanager" container_port: "{{ alertmanager_nodeport }}" host_port: "{{ alertmanager_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ harbor_http_nodeport }}" - name: "Harbor HTTP" container_port: "{{ harbor_http_nodeport }}" host_port: "{{ harbor_http_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ harbor_https_nodeport }}" - name: "Harbor HTTPS" container_port: "{{ harbor_https_nodeport }}" host_port: "{{ harbor_https_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ i2edge_nodeport }}" - name: "i2edge" container_port: "{{ i2edge_nodeport }}" host_port: "{{ i2edge_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ artefact_manager_nodeport }}" - name: "Artefact Manager" container_port: "{{ artefact_manager_nodeport }}" host_port: "{{ artefact_manager_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Federation Manager" container_port: "{{ federation_manager_nodeport }}" host_port: "{{ federation_manager_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Keycloak" container_port: "{{ keycloak_nodeport }}" host_port: "{{ keycloak_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "MongoDB" container_port: "{{ mongodb_nodeport }}" host_port: "{{ mongodb_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Homer Dashboard" container_port: "{{ homer_nodeport }}" host_port: "{{ homer_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Remote Federation Manager" container_port: "{{ remote_federation_manager_nodeport }}" host_port: "{{ remote_federation_manager_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Remote Keycloak" container_port: "{{ remote_keycloak_nodeport }}" host_port: "{{ remote_keycloak_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Remote MongoDB" container_port: "{{ remote_mongodb_nodeport }}" host_port: "{{ remote_mongodb_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP # Cluster nodes configuration control_plane_nodes: 1 Loading Loading
.vscode/settings.json +3 −1 Original line number Diff line number Diff line { "ansible.python.interpreterPath": "/bin/python" "ansible.python.interpreterPath": "./venv/bin/python", "ansible.ansibleLint.path": "./venv/bin/ansible-lint", "python-envs.pythonProjects": [] } No newline at end of file
README.md +49 −28 Original line number Diff line number Diff line # Operator Platform Automation This repository contains the automation for deploying the Operator Platform. ## Documentation Full documentation is available in the `docs/` directory and can be viewed in https://op-automation-b0b7e6.pages.i2cat.net ### Running Documentation Locally 1. Create and activate the documentation virtual environment: ```bash python3 -m venv docs/.venv source docs/.venv/bin/activate ``` 2. Install dependencies: ```bash pip install -r docs/requirements.txt ``` 3. Serve the documentation: ```bash mkdocs serve ``` 4. Open http://127.0.0.1:8000 in your browser. ansible==13.0.0 ansible-compat==25.12.0 ansible-core==2.20.0 ansible-lint==25.12.1 attrs==25.4.0 black==25.12.0 bracex==2.6 cachetools==6.2.2 certifi==2025.11.12 cffi==2.0.0 charset-normalizer==3.4.4 click==8.3.1 cryptography==46.0.3 distro==1.9.0 docker==7.1.0 durationpy==0.10 filelock==3.20.1 google-auth==2.43.0 idna==3.11 Jinja2==3.1.6 jsonschema==4.25.1 jsonschema-specifications==2025.9.1 kubernetes==34.1.0 MarkupSafe==3.0.3 mypy_extensions==1.1.0 oauthlib==3.3.1 packaging==25.0 pathspec==0.12.1 platformdirs==4.5.1 pyasn1==0.6.1 pyasn1_modules==0.4.2 pycparser==2.23 python-dateutil==2.9.0.post0 pytokens==0.3.0 PyYAML==6.0.3 referencing==0.37.0 requests==2.32.5 requests-oauthlib==2.0.0 resolvelib==1.2.1 rpds-py==0.30.0 rsa==4.9.1 ruamel.yaml==0.18.16 ruamel.yaml.clib==0.2.15 six==1.17.0 subprocess-tee==0.4.2 urllib3==2.3.0 wcmatch==10.1 websocket-client==1.9.0 yamllint==1.37.1
ansible/automation/1-kind-cluster/kind-config.yaml +30 −0 Original line number Diff line number Diff line Loading @@ -13,26 +13,56 @@ nodes: - "127.0.0.1" - "10.69.222.3" extraPortMappings: # API Server - containerPort: 6443 hostPort: 6443 listenAddress: "0.0.0.0" protocol: TCP # Prometheus - containerPort: 30090 hostPort: 30090 listenAddress: "0.0.0.0" protocol: TCP # Grafana - containerPort: 30091 hostPort: 30091 listenAddress: "0.0.0.0" protocol: TCP # Alertmanager - containerPort: 30092 hostPort: 30092 listenAddress: "0.0.0.0" protocol: TCP # i2edge - containerPort: 30769 hostPort: 30769 listenAddress: "0.0.0.0" protocol: TCP # Federation Manager - containerPort: 30989 hostPort: 30989 listenAddress: "0.0.0.0" protocol: TCP # Homer Dashboard - containerPort: 30088 hostPort: 30088 listenAddress: "0.0.0.0" protocol: TCP # Remote Federation Manager - containerPort: 30990 hostPort: 30990 listenAddress: "0.0.0.0" protocol: TCP # Remote Keycloak - containerPort: 30083 hostPort: 30083 listenAddress: "0.0.0.0" protocol: TCP # Remote MongoDB - containerPort: 30018 hostPort: 30018 listenAddress: "0.0.0.0" protocol: TCP - role: worker - role: worker containerdConfigPatches: Loading
ansible/group_vars/all.yml +58 −8 Original line number Diff line number Diff line Loading @@ -27,41 +27,91 @@ harbor_http_nodeport: 30002 harbor_https_nodeport: 30003 i2edge_nodeport: 30769 artefact_manager_nodeport: 30080 federation_manager_nodeport: 30989 keycloak_nodeport: 30082 homer_nodeport: 30088 mongodb_nodeport: 30017 remote_federation_manager_nodeport: 30990 remote_keycloak_nodeport: 30083 remote_mongodb_nodeport: 30018 # Port mappings - using parameterized NodePorts to avoid duplication port_mappings: - container_port: "{{ api_server_port }}" - name: "API Server" container_port: "{{ api_server_port }}" host_port: "{{ api_server_port }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ prometheus_nodeport }}" - name: "Prometheus" container_port: "{{ prometheus_nodeport }}" host_port: "{{ prometheus_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ grafana_nodeport }}" - name: "Grafana" container_port: "{{ grafana_nodeport }}" host_port: "{{ grafana_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ alertmanager_nodeport }}" - name: "Alertmanager" container_port: "{{ alertmanager_nodeport }}" host_port: "{{ alertmanager_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ harbor_http_nodeport }}" - name: "Harbor HTTP" container_port: "{{ harbor_http_nodeport }}" host_port: "{{ harbor_http_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ harbor_https_nodeport }}" - name: "Harbor HTTPS" container_port: "{{ harbor_https_nodeport }}" host_port: "{{ harbor_https_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ i2edge_nodeport }}" - name: "i2edge" container_port: "{{ i2edge_nodeport }}" host_port: "{{ i2edge_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - container_port: "{{ artefact_manager_nodeport }}" - name: "Artefact Manager" container_port: "{{ artefact_manager_nodeport }}" host_port: "{{ artefact_manager_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Federation Manager" container_port: "{{ federation_manager_nodeport }}" host_port: "{{ federation_manager_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Keycloak" container_port: "{{ keycloak_nodeport }}" host_port: "{{ keycloak_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "MongoDB" container_port: "{{ mongodb_nodeport }}" host_port: "{{ mongodb_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Homer Dashboard" container_port: "{{ homer_nodeport }}" host_port: "{{ homer_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Remote Federation Manager" container_port: "{{ remote_federation_manager_nodeport }}" host_port: "{{ remote_federation_manager_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Remote Keycloak" container_port: "{{ remote_keycloak_nodeport }}" host_port: "{{ remote_keycloak_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP - name: "Remote MongoDB" container_port: "{{ remote_mongodb_nodeport }}" host_port: "{{ remote_mongodb_nodeport }}" listen_address: "{{ api_server_address }}" protocol: TCP # Cluster nodes configuration control_plane_nodes: 1 Loading