Nutanix_Home_Lab_HLD_3_Programmering - itnett/FTD02H-N GitHub Wiki
For å integrere temaet "Programmering" i din eksisterende Nutanix CE-labb, kan vi utvide miljøet med flere VLAN, domener, og servere som er optimalisert for å støtte læring og utvikling innen programmering. Vi vil også utnytte ressursene i riggen og lage en plan som passer innenfor de begrensningene vi har.
For å støtte programmeringstemaet, vil vi introdusere flere VLAN og dedikerte servere for utviklingsmiljøer, API-testing, og sikkerhetsrelaterte programmeringsaktiviteter.
| VLAN ID | Nettverk | IP-adresseplan | Bruk | 
|---|---|---|---|
| VLAN 100 | Dev Network | 10.0.2.0/24 | Utviklingsmiljøer og testservere | 
| VLAN 110 | API Testing Network | 10.0.3.0/24 | API utvikling og testing | 
| VLAN 120 | GUI Development Network | 10.0.4.0/24 | GUI utvikling og frontend testing | 
| VLAN 130 | Secure Coding Network | 10.0.5.0/24 | Sikkerhetsfokusert programmering og testing | 
For å simulere en realistisk programmeringsmiljø, vil vi opprette separate domener og servere for hver kategori. Dette vil gi deg mulighet til å teste og utvikle i forskjellige kontekster.
| Domene | Servernavn | Rolle | Ressurser | VLAN | 
|---|---|---|---|---|
| dev.local | DEV-SERVER-01 | Utviklingsserver for Python/Java/C# | vCPU: 4, RAM: 8GB, Lagring: 100GB SSD | VLAN 100 | 
| api.local | API-SERVER-01 | API Testing server (Node.js, Flask) | vCPU: 4, RAM: 8GB, Lagring: 100GB SSD | VLAN 110 | 
| gui.local | GUI-SERVER-01 | Frontend Development (React, Angular) | vCPU: 4, RAM: 8GB, Lagring: 100GB SSD | VLAN 120 | 
| secure.local | SECURE-SERVER-01 | Sikker Koding og Testing (OWASP, SAST) | vCPU: 4, RAM: 8GB, Lagring: 100GB SSD | VLAN 130 | 
Vi lager nå Blueprints i Nutanix Calm for hver server i de ulike domenene. Disse Blueprintene vil installere nødvendige verktøy og konfigurere miljøet ved oppstart.
Blueprint Details:
- 
Name: 
DEV_SERVER_01 - Base Image: Minimal Ubuntu (Template)
 - Scripts:
 
#!/bin/bash
# Startup Script: configure_dev_server.sh
# Set Hostname
hostnamectl set-hostname "DEV-SERVER-01"
# Set IP Address
nmcli con mod "System eth0" ipv4.addresses "10.0.2.10/24" ipv4.gateway "10.0.2.1" ipv4.dns "10.0.2.1" ipv4.method manual
nmcli con up "System eth0"
# Install Python, Java, C# (Mono)
apt-get update -y
apt-get install -y python3 openjdk-11-jdk mono-complete
# Install essential development tools
apt-get install -y git build-essentialBlueprint Details:
- 
Name: 
API_SERVER_01 - Base Image: Minimal Ubuntu (Template)
 - Scripts:
 
#!/bin/bash
# Startup Script: configure_api_server.sh
# Set Hostname
hostnamectl set-hostname "API-SERVER-01"
# Set IP Address
nmcli con mod "System eth0" ipv4.addresses "10.0.3.10/24" ipv4.gateway "10.0.3.1" ipv4.dns "10.0.3.1" ipv4.method manual
nmcli con up "System eth0"
# Install Node.js and Flask
apt-get update -y
apt-get install -y nodejs npm python3-pip
# Install Flask
pip3 install Flask
# Install Express.js for Node.js
npm install express --saveBlueprint Details:
- 
Name: 
GUI_SERVER_01 - Base Image: Minimal Ubuntu (Template)
 - Scripts:
 
#!/bin/bash
# Startup Script: configure_gui_server.sh
# Set Hostname
hostnamectl set-hostname "GUI-SERVER-01"
# Set IP Address
nmcli con mod "System eth0" ipv4.addresses "10.0.4.10/24" ipv4.gateway "10.0.4.1" ipv4.dns "10.0.4.1" ipv4.method manual
nmcli con up "System eth0"
# Install Node.js and npm
apt-get update -y
apt-get install -y nodejs npm
# Install React and Angular CLI
npm install -g create-react-app
npm install -g @angular/cliBlueprint Details:
- 
Name: 
SECURE_SERVER_01 - Base Image: Minimal Ubuntu (Template)
 - Scripts:
 
#!/bin/bash
# Startup Script: configure_secure_server.sh
# Set Hostname
hostnamectl set-hostname "SECURE-SERVER-01"
# Set IP Address
nmcli con mod "System eth0" ipv4.addresses "10.0.5.10/24" ipv4.gateway "10.0.5.1" ipv4.dns "10.0.5.1" ipv4.method manual
nmcli con up "System eth0"
# Install OWASP ZAP and SAST tools
apt-get update -y
apt-get install -y zaproxy
# Download and setup OWASP Dependency Check
wget https://github.com/jeremylong/DependencyCheck/releases/download/v6.1.5/dependency-check-6.1.5-release.zip
unzip dependency-check-6.1.5-release.zip -d /opt/dependency-check
ln -s /opt/dependency-check/bin/dependency-check.sh /usr/local/bin/dependency-check
# Install Bandit for Python SAST
pip3 install bandit- 
VLAN 100 (Dev Network):
- Brukes for programmering og utvikling.
 - IP Range: 10.0.2.0/24.
 
 - 
VLAN 110 (API Testing Network):
- Dedikert til API-utvikling og testing.
 - IP Range: 10.0.3.0/24.
 
 - 
VLAN 120 (GUI Development Network):
- Isolert nettverk for frontend utvikling.
 - IP Range: 10.0.4.0/24.
 
 - 
VLAN 130 (Secure Coding Network):
- Brukes for sikkerhetsrelatert programmering.
 - IP Range: 10.0.5.0/24.
 
 
- 
dev.local:
- For DEV-SERVER-01 og andre utviklingsservere.
 
 - 
api.local:
- For API-SERVER-01 og andre API-testservere.
 
 - 
gui.local:
- For GUI-SERVER-01 og frontend utviklingsservere.
 
 - 
secure.local:
- For SECURE-SERVER-01 og sikkerhetsfokuserte programmeringsservere.
 
 
- 
Blueprints og Automation:
- Bruk Nutanix Calm til å sette opp Blueprints som enkelt kan starte opp og ned ulike miljøer basert på programmeringsfokus.
 - Du kan også bruke Nutanix’s REST API for å automatisere opprettelsen av miljøer basert på spesifikke krav, som for eksempel sikkerhetstesting eller API-utvikling.
 
 - 
Ressurshåndtering:
- Sørg for at du holder styr på ressursbruken i Nutanix Prism, slik at du optimaliserer bruken av CPU, minne og lagring når du kjører flere av disse miljøene samtidig.
 
 
- 
Grunnleggende Programmering:
- Bruk DEV-SERVER-01 for å utvikle grunnleggende programmeringsferdigheter
 
 
i språk som Python, Java, og C#.
- 
API-utvikling:
- Bruk API-SERVER-01 til å designe, implementere, og teste API-er i Node.js og Flask.
 
 - 
GUI-utvikling:
- Bruk GUI-SERVER-01 til å bygge og teste GUI-applikasjoner i React og Angular.
 
 - 
Sikker Programmering:
- Bruk SECURE-SERVER-01 til å teste applikasjoners sårbarheter ved hjelp av OWASP-verktøy og andre SAST-verktøy.
 
 
Dette oppsettet gir en omfattende lab for å utvikle og teste programmeringsferdigheter i et trygt og kontrollert miljø. Samtidig gir det fleksibilitet til å skifte mellom ulike fokusområder som sikkerhet, GUI-utvikling, og API-testing, avhengig av læringsmålene dine.
Her er en konkret veiledning for å sette opp Blueprints i Nutanix Calm for å starte og stoppe ulike miljøer basert på programmeringsfokus. Jeg vil også vise hvordan du kan bruke Nutanix’s REST API for å automatisere opprettelsen av disse miljøene, samt hvordan du kan håndtere ressursbruken i Nutanix Prism.
- 
Åpne Prism Central:
- Logg inn på Nutanix Prism Central.
 - Gå til Apps i toppmenyen og velg Calm.
 
 - 
Opprett en Ny Blueprint:
- Klikk på Blueprints i venstre meny, og deretter på Create Blueprint.
 
 - 
Definer Blueprint Strukturen:
- Gi Blueprinten et navn, for eksempel 
DEV_SERVER_BLUEPRINT. - Velg en eksisterende VM-maler eller klon en eksisterende VM til å bruke som basis.
 - Legg til de nødvendige komponentene, som OS, nettverk, og ressurser (vCPU, RAM, Disk).
 
 - Gi Blueprinten et navn, for eksempel 
 - 
Legg til Oppstartsskript:
- Gå til Service > Packages og legg til et skript under Install Task.
 - For eksempel, for 
DEV-SERVER-01:# Set Hostname hostnamectl set-hostname "DEV-SERVER-01" # Set IP Address nmcli con mod "System eth0" ipv4.addresses "10.0.2.10/24" ipv4.gateway "10.0.2.1" ipv4.dns "10.0.2.1" ipv4.method manual nmcli con up "System eth0" # Install Development Tools apt-get update -y apt-get install -y python3 openjdk-11-jdk mono-complete git build-essential
 
 - 
Konfigurer Nettverk:
- Velg riktig VLAN for hver VM i Network Configuration.
 - Bruk eksisterende VLAN ID-er for Dev, API, GUI, Secure, osv.
 
 - 
Lagre og Publiser Blueprint:
- Når du er ferdig, klikk på Save og deretter Publish for å gjøre Blueprinten tilgjengelig for bruk.
 
 
- 
Start et Nytt Miljø:
- Gå til Blueprints i Calm, velg den ønskede Blueprinten (f.eks. 
DEV_SERVER_BLUEPRINT), og klikk på Launch. - Følg instruksjonene for å sette opp nye VM-er basert på Blueprinten.
 
 - Gå til Blueprints i Calm, velg den ønskede Blueprinten (f.eks. 
 - 
Stopp og Fjern Miljøer:
- For å stoppe eller slette et miljø, kan du gå til Applications i Calm, velge miljøet, og klikke på Delete eller Power Off.
 
 
Du kan bruke Nutanix’s REST API til å automatisere opprettelsen og styringen av miljøer. Her er et eksempel på hvordan du kan gjøre dette ved hjelp av API-kall.
For å bruke REST API, må du først autentisere mot Nutanix API-serveren.
curl -u "username:password" -X POST 'https://<prism_central_ip>:9440/api/nutanix/v3/login'Dette vil returnere en token som du bruker for videre API-kall.
- Send en POST-forespørsel for å opprette et miljø basert på en Blueprint:
 
curl -X POST https://<prism_central_ip>:9440/api/nutanix/v3/blueprints/<blueprint_uuid>/launch \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
  "spec": {
    "name": "DEV_SERVER_DEPLOYMENT",
    "description": "Deployment of DEV-SERVER-01",
    "app_profile_reference": {
      "kind": "app_profile",
      "uuid": "<app_profile_uuid>"
    },
    "application_name": "DEV-SERVER-01"
  }
}'- 
<prism_central_ip>: IP-adressen til din Prism Central. - 
<blueprint_uuid>: UUID for Blueprinten du vil bruke. - 
<app_profile_uuid>: UUID for applikasjonsprofilen i Blueprinten. 
- Fjern et Miljø ved hjelp av API:
 
curl -X DELETE https://<prism_central_ip>:9440/api/nutanix/v3/apps/<application_uuid> \
-H "Authorization: Bearer <token>"- 
<application_uuid>: UUID for applikasjonen du vil slette. 
For å overvåke ressursbruken i Nutanix Prism og sikre optimal ytelse når du kjører flere miljøer samtidig, kan du følge disse trinnene:
- 
Overvåk CPU, Minne, og Lagringsbruk:
- Gå til Prism Element eller Prism Central.
 - Velg VM-oversikten for å se ressursbruk per VM.
 - Bruk grafer og sanntidsdata for å overvåke ytelsen.
 
 - 
Brukerdefinerte Varsler:
- Sett opp varsler i Prism for å bli informert når CPU, minne, eller lagring når bestemte terskler.
 - Gå til Alerts i Prism Central, og konfigurer varsler basert på dine behov.
 
 - 
Ressursallokering og Optimalisering:
- Juster ressursallokeringen til VM-er basert på observasjoner.
 - Bruk Prism’s Capacity Runway-verktøy for å planlegge fremtidige utvidelser eller ressurstilpasninger.
 
 - 
Ressursbegrensning via Calm:
- I Calm, kan du sette opp ressursgrenser i Blueprinten for å hindre overforbruk av CPU, RAM, eller lagring.
 
 
Dette gir deg en konkret veiledning for å bruke Nutanix Calm til å sette opp, starte, og stoppe ulike programmeringsfokuserte miljøer, automatisere opprettelsen av disse miljøene via Nutanix REST API, og overvåke og optimalisere ressursbruken i Nutanix Prism. Ved å følge disse trinnene, kan du maksimere utnyttelsen av riggen din og sikre at hvert miljø er riktig konfigurert for sine spesifikke formål.