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-essential
Blueprint 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 --save
Blueprint 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/cli
Blueprint 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.