You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|**Phase1**| 1 VM |Standard_D8s_v4|32 GB |~$3 / day | 01–03 | First-time setup, Azure Student start |
13
+
|**Phase1**| 1 VM |Standard_D4s_v4|16 GB |~$1.50 / day | 01–03 | First-time setup, Azure Student start |
14
14
|**FullStack**| 1 VM | Standard_E16s_v4 | 128 GB |~$8 / day | 01–05 | All 20 modules, integration testing |
15
15
|**Lab06HA**| 8 VMs | per-server | varies |~$16 / day | 01–06 | Production HA, Ansible playbooks, DR drills |
16
16
17
17
> **Azure Student ($100 credit):**
18
-
> - Phase1 → ~33 days of 8-hour sessions
18
+
> - Phase1 → ~65 days of 8-hour sessions
19
19
> - FullStack → ~12 days of 8-hour sessions
20
20
> - Lab06HA → use sparingly — 1–2 full sessions for Lab 06
21
+
>
22
+
> **Azure Student vCPU quota:** Student subscriptions in westus2 are typically limited to 6 vCPUs. Phase1 uses `Standard_D4s_v4` (4 vCPUs) to stay within this limit. Do not use `Standard_D8s_v4` (8 vCPUs) — deployment will fail with a quota error.
21
23
22
24
---
23
25
@@ -75,7 +77,7 @@ cd it-stack-installer
75
77
| Resource | Value |
76
78
|----------|-------|
77
79
| Resource Group |`rg-it-stack-phase1`|
78
-
| VM |`lab-single` (Standard_D8s_v4, 64 GB disk) |
80
+
| VM |`lab-single` (Standard_D4s_v4, 64 GB disk — 4 vCPU / 16 GB RAM) |
79
81
| Private IP |`10.0.50.10`|
80
82
| Public IP | Yes (assigned to lab-single) |
81
83
| OS | Ubuntu 24.04 LTS |
@@ -108,33 +110,53 @@ ssh itstack@<PUBLIC_IP>
108
110
After SSH-ing into the VM:
109
111
110
112
```bash
111
-
# ── Step 1: Navigate to installer repo (pre-cloned) ──────────────────────────
112
-
cd~/it-stack-installer
113
-
114
-
# ── Step 2: Run Lab 01 (FreeIPA standalone) ───────────────────────────────────
115
-
bash tests/labs/01-01-standalone.sh
116
-
# Expected: FreeIPA container starts, LDAP health check passes
113
+
# ── Upload and run the Phase 1 standalone lab suite ──────────────────────────
114
+
# (from your Windows machine — run before SSH, or paste into a terminal)
> **Note — Traefik Docker provider (Docker 29.x):** Docker Engine 29.x raised the minimum accepted client API version from 1.24 to 1.40. Traefik v3.x defaults to API 1.24 for initial negotiation, causing Docker label discovery to fail on this VM. Lab 01 validates routing via the file provider instead (equivalent functionality). Docker label discovery is tested in Lab 02+ where the Docker daemon version is controlled.
159
+
138
160
For Labs 02 and 03, see the individual lab guides in `docs/labs/`.
139
161
140
162
### Cost Control
@@ -154,11 +176,13 @@ For Labs 02 and 03, see the individual lab guides in `docs/labs/`.
154
176
155
177
| Activity | Duration | Cost |
156
178
|----------|----------|------|
157
-
| Deploy + 8hr session | 1 day |~$3.00|
179
+
| Deploy + 8hr session (D4s_v4) | 1 day |~$1.55|
158
180
| Stop overnight (disk only) | 16 hrs |~$0.05 |
159
-
| 1 week (8hrs/day, stopped overnight) | 7 days |~$21.35|
181
+
| 1 week (8hrs/day, stopped overnight) | 7 days |~$11.20|
160
182
| Delete between sessions | — | $0.00 |
161
183
184
+
> **Standard_D4s_v4** (4 vCPU / 16 GB) costs ~$0.192/hr in westus2 as of 2026.
185
+
162
186
---
163
187
164
188
## Profile 2: FullStack — All 20 Modules (Labs 01–05)
@@ -571,12 +595,13 @@ az snapshot list --resource-group rg-it-stack-phase1 --output table
| VM creation fails with "quota exceeded" | Azure Student vCPU limits | Use a different region (`-Location westus2`) or request quota increase|
598
+
| VM creation fails with "quota exceeded" | Azure Student limits to 6 vCPUs in westus2 | Script defaults to `Standard_D4s_v4` (4 vCPUs). Do NOT use D8s_v4 (8 vCPUs) on Student subs.|
575
599
| SSH timeout | VM still starting | Wait 2–3 min and retry |
576
600
| SSH "connection refused" | VM auto-shutdown triggered |`.\teardown-azure-lab.ps1 -StartAll`|
577
601
| Docker not ready after SSH | Cloud-init still running |`journalctl -u cloud-final --no-pager -n 50`|
578
602
|`ansible: command not found` on VM | Cloud-init incomplete | Wait 5 min, then `sudo apt-get install -y ansible-core`|
579
603
| Lab test fails: "port 443 not open" | Traefik not running |`docker compose -f docker/docker-compose.standalone.yml up -d`|
604
+
| Traefik Docker provider error: "client version 1.24 is too old" | Docker 29.x raised min API to 1.40; Traefik v3.x defaults to 1.24 | Use file provider for Lab 01 routing tests. Docker label discovery works in controlled environments (Docker ≤ 28.x or patched Traefik). |
580
605
| Public IP shows `null`| Pip not yet assigned | Wait 2 min: `az network public-ip show -g <rg> -n pip-lab-single --query ipAddress -o tsv`|
581
606
| Multi-VM: can't SSH to internal VMs |~/.ssh/config not set up | See "SSH Access" section above |
582
607
| Ansible ping fails for some nodes | VMs still booting |`az vm wait -g rg-it-stack-lab06 -n lab-id1 --created`|
0 commit comments