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.

1. Utvidet Nettverksoppsett og VLAN-plan

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

2. Domenestruktur og Servernavngivning

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

3. Blueprints og Oppstartsskript

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.

A. DEV-SERVER-01 (Python, Java, C#)

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

B. API-SERVER-01 (Node.js, Flask)

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

C. GUI-SERVER-01 (React, Angular)

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

D. SECURE-SERVER-01 (Sikker Koding, OWASP, SAST)

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

4. Konfigurasjon av Nettverk og Domener

Nettverkskonfigurasjon:

  • 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.

Domeneoppsett:

  • 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.

5. Automatisering og Ressurshåndtering

  • 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.

6. Lærings- og Utviklingsscenarier

  • 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.

1. Oppsett av Nutanix Calm Blueprints

Steg 1: Opprett en Blueprint i Nutanix Calm

  1. Åpne Prism Central:

    • Logg inn på Nutanix Prism Central.
    • Gå til Apps i toppmenyen og velg Calm.
  2. Opprett en Ny Blueprint:

    • Klikk på Blueprints i venstre meny, og deretter på Create Blueprint.
  3. 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).
  4. 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
  5. Konfigurer Nettverk:

    • Velg riktig VLAN for hver VM i Network Configuration.
    • Bruk eksisterende VLAN ID-er for Dev, API, GUI, Secure, osv.
  6. Lagre og Publiser Blueprint:

    • Når du er ferdig, klikk på Save og deretter Publish for å gjøre Blueprinten tilgjengelig for bruk.

Steg 2: Bruk Blueprint til å Starte og Stoppe Miljøer

  1. 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.
  2. 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.

2. Automatisering med Nutanix REST API

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.

Steg 1: Autentisering

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.

Steg 2: Opprettelse av et Miljø med API

  1. 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.
  1. 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.

3. Ressurshåndtering i Nutanix Prism

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:

  1. 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.
  2. 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.
  3. Ressursallokering og Optimalisering:

    • Juster ressursallokeringen til VM-er basert på observasjoner.
    • Bruk Prism’s Capacity Runway-verktøy for å planlegge fremtidige utvidelser eller ressurstilpasninger.
  4. 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.

⚠️ **GitHub.com Fallback** ⚠️