Skip to content

Commit 9390814

Browse files
committed
feat(infra): Multi-Cloud QECD Pipeline implementation (GCP+DO)
Architectural Refactoring & Toolchain Bridging: - Overhauled QuanuX-Infra/terraform/gcp/main.tf resolving legacy panopticon mappings, upgrading entirely to the 9-Node QECD format. - Provisioned native high-frequency C3 compute assignments (quanux-exec-spreader-aapl) via OS physics bounding specs. - Strictly partitioned structural terraform directories. Replaced ambiguous root configurations with isolated environments ('terraform/do' and 'terraform/gcp'). - Updated python quanuxctl (infra_commands.py) to transparently and dynamically switch contexts and output variables via the '--target' flag. - Integrated ansible dynamic inventory matrix linking the new QECD outputs mapping to correct instances implicitly using strict environment routing. - Scaffolded Phase 3 semantic deployment nodes (quanux_search) via ansible for Qdrant.
1 parent dafe3c4 commit 9390814

17 files changed

Lines changed: 270 additions & 124 deletions

File tree

QuanuX-Infra/ansible/dynamic_inventory.py

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
def get_terraform_outputs():
77
# Run terraform output -json to extract the active IPs securely
8-
target = os.environ.get("QUANUX_TARGET", "do")
9-
sub = "gcp" if target == "gcp" else ""
8+
target = os.environ.get("QUANUX_TARGET", "do").lower()
9+
sub = "gcp" if target == "gcp" else "do"
1010
terraform_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), f"../terraform/{sub}"))
1111
try:
1212
result = subprocess.run(["terraform", "output", "-json"], capture_output=True, text=True, cwd=terraform_dir, check=True)
@@ -151,6 +151,52 @@ def build_inventory():
151151
"internal_ip": priv_ip_annex
152152
}
153153

154+
# -- NEW GCP QECD Master Architecture Nodes --
155+
if "quanux_orchestra_public_ip" in outputs:
156+
inventory.setdefault("quanux_orchestra", {"hosts": []})
157+
pub = outputs["quanux_orchestra_public_ip"]["value"]
158+
inventory["quanux_orchestra"]["hosts"].append("quanux-orchestra-01")
159+
inventory["_meta"]["hostvars"]["quanux-orchestra-01"] = {
160+
"ansible_host": pub,
161+
"ansible_user": "quanux"
162+
}
163+
164+
if "quanux_nexus_public_ip" in outputs:
165+
inventory.setdefault("quanux_nexus", {"hosts": []})
166+
pub = outputs["quanux_nexus_public_ip"]["value"]
167+
inventory["quanux_nexus"]["hosts"].append("quanux-nexus-01")
168+
inventory["_meta"]["hostvars"]["quanux-nexus-01"] = {
169+
"ansible_host": pub,
170+
"ansible_user": "quanux"
171+
}
172+
173+
if "quanux_search_public_ip" in outputs:
174+
inventory.setdefault("quanux_search", {"hosts": []})
175+
pub = outputs["quanux_search_public_ip"]["value"]
176+
inventory["quanux_search"]["hosts"].append("quanux-search-01")
177+
inventory["_meta"]["hostvars"]["quanux-search-01"] = {
178+
"ansible_host": pub,
179+
"ansible_user": "quanux"
180+
}
181+
182+
if "quanux_annex_public_ip" in outputs:
183+
inventory.setdefault("quanux_annex", {"hosts": []})
184+
pub = outputs["quanux_annex_public_ip"]["value"]
185+
inventory["quanux_annex"]["hosts"].append("quanux-annex-01")
186+
inventory["_meta"]["hostvars"]["quanux-annex-01"] = {
187+
"ansible_host": pub,
188+
"ansible_user": "quanux"
189+
}
190+
191+
if "quanux_exec_spreader_aapl_public_ip" in outputs:
192+
inventory.setdefault("quanux_exec", {"hosts": []})
193+
pub = outputs["quanux_exec_spreader_aapl_public_ip"]["value"]
194+
inventory["quanux_exec"]["hosts"].append("quanux-exec-spreader-aapl")
195+
inventory["_meta"]["hostvars"]["quanux-exec-spreader-aapl"] = {
196+
"ansible_host": pub,
197+
"ansible_user": "quanux"
198+
}
199+
154200
return inventory
155201

156202
if __name__ == "__main__":
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
- name: "QECD Phase 3: Provision Search Layer (Qdrant & USearch Bridge)"
3+
hosts: quanux_search
4+
become: yes
5+
vars:
6+
qdrant_version: "v1.8.2"
7+
8+
tasks:
9+
- name: "Install base Docker dependencies"
10+
apt:
11+
name:
12+
- apt-transport-https
13+
- ca-certificates
14+
- curl
15+
- software-properties-common
16+
- python3-docker
17+
state: present
18+
update_cache: yes
19+
20+
- name: "Add Docker GPG Key"
21+
apt_key:
22+
url: https://download.docker.com/linux/ubuntu/gpg
23+
state: present
24+
25+
- name: "Add Docker APT Repo"
26+
apt_repository:
27+
repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable
28+
state: present
29+
30+
- name: "Install Docker engine"
31+
apt:
32+
name: docker-ce
33+
state: latest
34+
35+
- name: "Ensure Qdrant Data Directory exists"
36+
file:
37+
path: "/opt/qdrant_data"
38+
state: directory
39+
mode: '0755'
40+
owner: root
41+
group: root
42+
43+
- name: "Deploy Qdrant Neural Vector Engine"
44+
docker_container:
45+
name: "quanux-qdrant"
46+
image: "qdrant/qdrant:{{ qdrant_version }}"
47+
state: started
48+
restart_policy: unless-stopped
49+
ports:
50+
- "6333:6333" # HTTP API
51+
- "6334:6334" # gRPC API
52+
volumes:
53+
- "/opt/qdrant_data:/qdrant/storage"
54+
env:
55+
QDRANT__TELEMETRY_DISABLED: "true"
56+
QDRANT__LOG_LEVEL: "INFO"
57+
58+
- name: "Scaffold USearch C++ Bridge Integration Point"
59+
file:
60+
path: "/opt/quanux_usearch"
61+
state: directory
62+
mode: '0755'
63+
owner: "quanux"
64+
group: "quanux"
65+
66+
- name: "[Validation] Ensure Qdrant is responding"
67+
uri:
68+
url: "http://localhost:6333/readyz"
69+
method: GET
70+
status_code: 200
71+
register: qdrant_health
72+
retries: 5
73+
delay: 5
74+
until: qdrant_health.status == 200
File renamed without changes.

QuanuX-Infra/terraform/.terraform/providers/registry.terraform.io/digitalocean/digitalocean/2.78.0/darwin_amd64/CHANGELOG.md renamed to QuanuX-Infra/terraform/do/.terraform/providers/registry.terraform.io/digitalocean/digitalocean/2.78.0/darwin_amd64/CHANGELOG.md

File renamed without changes.

QuanuX-Infra/terraform/.terraform/providers/registry.terraform.io/digitalocean/digitalocean/2.78.0/darwin_amd64/LICENSE renamed to QuanuX-Infra/terraform/do/.terraform/providers/registry.terraform.io/digitalocean/digitalocean/2.78.0/darwin_amd64/LICENSE

File renamed without changes.

QuanuX-Infra/terraform/.terraform/providers/registry.terraform.io/digitalocean/digitalocean/2.78.0/darwin_amd64/README.md renamed to QuanuX-Infra/terraform/do/.terraform/providers/registry.terraform.io/digitalocean/digitalocean/2.78.0/darwin_amd64/README.md

File renamed without changes.

QuanuX-Infra/terraform/.terraform/providers/registry.terraform.io/digitalocean/digitalocean/2.78.0/darwin_amd64/terraform-provider-digitalocean_v2.78.0 renamed to QuanuX-Infra/terraform/do/.terraform/providers/registry.terraform.io/digitalocean/digitalocean/2.78.0/darwin_amd64/terraform-provider-digitalocean_v2.78.0

File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)