Skip to main content

๐Ÿš€ 2025 Enterprise Infrastructure Deployment System Overview

This system architecture outlines the full professional-grade development and deployment framework used by JP Robotic LLC for 2025 cloud operations, DevOps automation, and Drupal delivery pipelines.

The full stack is divided into five distinct functional layers, fully isolated using dual WSL2 environments on Windows workstations:

๐Ÿ”ง Environment Structure:

  • 1๏ธโƒฃ Dual WSL Design: Ubuntu for full-stack Drupal development; AlmaLinux for infrastructure automation and Vultr cloud provisioning.
  • 2๏ธโƒฃ Complete Drupal Toolbox: Modern IDEs, debugging, security, testing, AI content tools, DevOps pipelines, commerce integrations, and more.
  • 3๏ธโƒฃ Full Local Drupal 11 Stack: Ubuntu LTS with PHP 8.3, Composer, dual Apache+NGINX, multiple databases, and Docker support.
  • 4๏ธโƒฃ Isolated Ansible Control Node: AlmaLinux 10 for Infrastructure-as-Code automation on Vultr cloud.
  • 5๏ธโƒฃ Vultr Automation Preflight: Automated checks, API key management, SSH credential validation, and key ID extraction for secure provisioning.

This workflow ensures production environments are mirrored exactly, with enterprise-grade scaling, version-controlled automation, governance, security hardening, and Kubernetes-aligned container orchestration planning.

โš ๏ธ Primary Roles:

  • Junior Staff: Work exclusively within Ubuntu for Drupal site-building and frontend workflows.
  • Senior Ops Staff: Operate within AlmaLinux for cloud automation, orchestration, and cluster control.

๐Ÿš€ This model enables JP Robotic LLC to maximize agility and production stability through strict environment separation.

๐ŸŽฏ Dual WSL2 Enterprise Architecture (Strategic Isolation Model)

The JP Robotic LLC WSL2 system uses two isolated Linux environments to maintain clear separation of development and infrastructure roles.

1๏ธโƒฃ WSL Ubuntu (Drupal Development Environment)
  • Ubuntu LTS with full Drupal 11 stack.
  • Composer, PHP 8.3, Drush, Apache, NGINX, MariaDB, PostgreSQL.
  • GUI tools: phpMyAdmin, Gedit, Nautilus, Xdebug, WebProfiler.
  • Docker and DDEV for containerized environments.
  • AMPPS supported for rapid PHP prototyping.
  • Full IDE integration: PHPStorm, VSCode.
2๏ธโƒฃ WSL AlmaLinux 10 (Server Automation Control Node)
  • Matches Vultr production servers.
  • Dedicated Ansible control node for IaC pipelines.
  • Server provisioning, OS hardening, firewalls, Cockpit, Podman, Fail2ban, Grafana.
  • Portainer for container orchestration.
  • NGINX prioritized for Kubernetes ingress alignment.
  • Version-controlled playbooks for repeatable deployment.
โš ๏ธ Kubernetes-Aligned Forward Design
  • NGINX ingress ready for Kubernetes clusters.
  • Podman for daemonless container security.
  • Portainer for junior ops training.
๐ŸŽฏ Docker Learning Tools

๐Ÿ‘‰ This dual-stack model supports clear professional growth from developer to senior ops roles.

๐Ÿ–ฅ Local Development & IDEs

  • DDEV: Docker-based Drupal environment manager.
  • Lando: Docker dev environment with Drupal presets.
  • DrupalPod: Browser-based full dev.
  • GitPod: Cloud IDE for remote Drupal dev.
  • Composer: Required PHP dependency manager.
  • IDE: PHPStorm, VSCode with Drupal plugins.

๐Ÿ”Ž Debugging, Profiling & Inspection

  • Devel: Inspect config & data.
  • Xdebug: Step debugging with IDEs.
  • WebProfiler: Query insights.
  • Drush: CLI tasks.
  • Enable full error reporting in local.settings.php.

๐Ÿงน Code Quality, Linting & Upgrades

๐Ÿงช Testing & Automated QA

๐Ÿš€ DevOps, Automation & CI/CD

  • GitLab CI, GitHub Actions, Bitbucket Pipelines: Automate builds.
  • Robo: Local PHP task runner.
  • Terminus, Acquia CLI: Cloud CLI tools.
  • Docker Compose, Ansible, Terraform: Infra automation.

๐ŸŽจ Theming, Design Systems & UX

  • Bootstrap Barrio: Popular Bootstrap theme.
  • Gin Admin: Modern admin theme.
  • UI Patterns: Components in Drupal.
  • Layout Builder: Visual page building.
  • Storybook: Design system docs.
  • Figma: Design handoffs.

๐Ÿ›ก Security & Performance

  • Security Review: Automated scans.
  • Cloudflare WAF, ModSecurity: Web firewall.
  • HSTS, CSP, HTTPS: Best practices.
  • Redis, Memcached: Caching layers.
  • Varnish: HTTP acceleration.
  • Blackfire.io, Tideways: PHP profiling.

๐Ÿ—บ APIs, Headless & Decoupled

  • JSON:API: Core REST API.
  • GraphQL: Flexible headless API.
  • Subrequests: HTTP2 backend aggregation.
  • Next.js, Nuxt, Astro, Gatsby, SvelteKit: Frontend frameworks.

๐Ÿค– AI, Content Automation & ML

  • OpenAI Module: GPT content generation.
  • Whisper: Audio transcription.
  • AI media tagging: Image analysis.
  • DeepL, Google Translate API: Auto-translation.

๐Ÿ“ˆ Monitoring & Logs

  • New Relic: Full app monitoring.
  • Prometheus + Grafana: Metric visualization.
  • ELK Stack: Log analysis.
  • Sentry.io: Error tracking.

๐ŸŒŽ Community & Contribution

๐Ÿ’ฐ Commerce & SaaS

  • Drupal Commerce: Full eCommerce.
  • Stripe, PayPal, Authorize.net: Payment gateways.
  • Salesforce, HubSpot, Mautic, Mailchimp: CRM & marketing integrations.

โš™๏ธ Config Management

  • Config Split: Per-environment configs.
  • Config Ignore: Prevent sensitive overrides.
  • Config Readonly: Lock production configs.

โ™ฟ Accessibility

  • Siteimprove, axe-core, WAVE: WCAG scans.
  • Color contrast testing: Design checks.
  • Accessibility Module: Manual audits.

๐Ÿ”ฅ 2025 Pro Tips

  • Track Drupal Core Release Cycles.
  • Export configs early (drush cex/cim).
  • Separate site building from custom modules.
  • Adopt CI & regression tests.
  • Profile staging performance regularly.

๐ŸŽฏ Audience

A step-by-step, professional Drupal 11 development stack for Windows using WSL2, Docker, GUI tools, Composer, and modern best practices.

โš™๏ธ System Requirements

  • Windows 10 (21H2+) or Windows 11
  • Admin rights on Windows
  • Good internet connection

๐Ÿ’พ Disk Space Estimates

  • WSL2 + Ubuntu: ~2 GB
  • PHP + Apache + NGINX: ~1 GB
  • MariaDB + PostgreSQL: ~1.5 GB
  • GUI Tools: ~2 GB
  • Drupal (per project): ~500 MB
  • PHPStorm IDE: ~1.5 GB
  • Docker Desktop: ~4 GB
  • Full stack: ~12โ€“14 GB

๐Ÿš€ Install WSL2 + Ubuntu

wsl --install
wsl --update

๐Ÿ–ฅ Verify WSL & GUI (WSLg)

wsl --version
wsl -d Ubuntu
echo $WAYLAND_DISPLAY
sudo apt install -y x11-apps
xeyes

๐Ÿ”„ Update Ubuntu Packages

sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl unzip wget

๐Ÿ“ฆ Install PHP 8.3 + Composer

sudo apt install -y php php-cli php-fpm php-curl php-gd php-mbstring php-xml php-zip php-soap php-bcmath php-intl php-mysql php-pgsql php-opcache
sudo apt install -y composer
composer self-update

๐Ÿ—„ Install Databases

sudo apt install -y mariadb-server mariadb-client
sudo service mariadb start
sudo apt install -y postgresql postgresql-contrib
sudo service postgresql start

๐ŸŒ Install Apache + NGINX

sudo apt install -y apache2 nginx
sudo service apache2 start
sudo service nginx start
sudo nano /etc/apache2/ports.conf  # Change to Listen 8080
sudo service apache2 restart

โœ… Verify Components

uname -a
php -v
composer --version
sudo service mariadb status
sudo service postgresql status
sudo service apache2 status
sudo service nginx status

๐Ÿšง Install Drupal 11

mkdir ~/drupal-dev && cd ~/drupal-dev
composer create-project drupal/recommended-project mysite
cd mysite
cp web/sites/default/default.settings.php web/sites/default/settings.php
chmod -R 755 web/sites
touch web/sites/default/services.yml

๐Ÿ”’ Install phpMyAdmin

sudo apt install phpmyadmin
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

๐Ÿ–ฅ Install GUI Tools

sudo apt install nautilus
gedit

Tip: Use standalone apps; XFCE not recommended.

๐Ÿงน Install Drush

cd ~/drupal-dev/mysite
composer require drush/drush
vendor/bin/drush status

๐Ÿ›ก Debugging & WebProfiler

sudo apt install php-xdebug

Enable WebProfiler in Drupal Admin.

๐Ÿš€ Docker/DDEV (Optional)

  • Install Docker Desktop (with WSL2 integration).
  • Install DDEV for local containers.

๐Ÿ“ Daily Startup Cheat Sheet

wsl
sudo service apache2 start
sudo service nginx start
sudo service mariadb start
sudo service postgresql start

Optional GUI:

nautilus &
gedit &

๐ŸŒ Access URLs

  • NGINX Drupal: http://localhost
  • Apache Drupal: http://localhost:8080
  • phpMyAdmin: /phpmyadmin paths match web server.

โœ… Final Checklist

  • WSL2 installed
  • PHP, Composer, Drush verified
  • Databases running
  • Apache & NGINX dual stack working
  • Drupal 11 via Composer
  • phpMyAdmin accessible
  • GUI tools functional
  • Docker/DDEV ready (optional)

๐Ÿ Master Stack Complete!

You now have a full, enterprise-grade Drupal 11 stack on Windows, ready for serious development and teaching.

๐ŸŽฏ Purpose

Run an isolated Ansible automation control node inside WSL2 using AlmaLinux 10. This matches Vultr production servers for professional Infrastructure-as-Code.

โš™๏ธ Requirements

  • Windows 10 (21H2+) or Windows 11
  • WSL2 installed and working
  • Vultr cloud account for provisioning

๐Ÿš€ Install AlmaLinux 10 in WSL2

wsl --install -d AlmaLinux

Or list available distros:

wsl --list --online
wsl --install -d almalinux-10

๐Ÿ” Verify Installation

wsl --version
wsl -d AlmaLinux
whoami

๐Ÿ“ฆ Update Packages & Enable Repos

sudo -i
dnf update -y
dnf install epel-release -y
/usr/bin/crb enable

๐Ÿ“ Install nano (optional)

dnf install nano -y

๐Ÿ Install Python & pip

dnf install python3 python3-pip -y
python3 -m pip install --upgrade --user pip

๐Ÿงฐ Install Ansible

python3 -m pip install --user ansible
echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.bashrc
source ~/.bashrc
ansible --version

๐Ÿ“‚ Ansible Workspace Structure

mkdir -p ~/ansible/{inventories,playbooks,roles,files}

๐Ÿ”‘ Generate SSH Key

ssh-keygen -t ed25519 -C "vultr-alma10-bootstrap"
cat ~/.ssh/id_ed25519.pub

Upload your public key to Vultr SSH Keys.

๐Ÿ“„ Create Inventory File

nano ~/ansible/inventories/hosts.ini
[all]
vultr1 ansible_host=YOUR_VULTR_IP ansible_user=root

๐Ÿ“ Create ansible.cfg

nano ~/ansible/ansible.cfg
[defaults]
inventory = ./inventories/hosts.ini
host_key_checking = False
retry_files_enabled = False
forks = 10
interpreter_python = auto_silent

โœ… Stage 1 Complete

Your AlmaLinux control node is now fully configured for Vultr automation.

๐Ÿš€ Stage 2: Use the Ansible Control Node

๐Ÿ”Ž Enter AlmaLinux
wsl -d AlmaLinux
๐Ÿ“‚ Enter Ansible Directory
cd ~/ansible
ls -la
๐Ÿงช Verify Ansible
ansible --version
๐Ÿ”ง Test Connection
ansible all -m ping
โ–ถ Run a Playbook
ansible-playbook playbooks/bootstrap.yml

๐Ÿ’ก Tips

  • Playbooks: ~/ansible/playbooks/
  • Roles: ~/ansible/roles/
  • Inventory: ~/ansible/inventories/hosts.ini

๐Ÿš€ Fully Operational

Youโ€™re ready to provision, configure, and manage Vultr servers with Infrastructure-as-Code workflows!

โœ… Preflight Directory Setup

mkdir -p ~/ansible/group_vars/all ~/ansible/playbooks ~/ansible/inventories ~/ansible/files ~/ansible/roles

โœ… Generate Vultr SSH Key

mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t ed25519 -C "vultr-alma10-bootstrap"
cat ~/.ssh/id_ed25519.pub

Upload your public key to Vultrโ€™s SSH Keys panel.

โœ… Create Preflight Check Script

cd ~/ansible
nano preflight-check.sh

Paste the following:

#!/bin/bash

echo "========== Ansible Control Node Preflight =========="

# WSL Check
grep -q "microsoft" /proc/version && echo "โœ… Running inside WSL" || { echo "โŒ Not WSL"; exit 1; }

# AlmaLinux Check
grep -q "AlmaLinux" /etc/os-release && echo "โœ… AlmaLinux detected" || { echo "โŒ Not AlmaLinux"; exit 1; }

# Python
command -v python3 &>/dev/null && echo "โœ… Python installed" || { echo "โŒ Python missing"; exit 1; }

# Ansible
command -v ansible &>/dev/null && echo "โœ… Ansible installed" && ansible --version | head -n 1 || { echo "โŒ Ansible missing"; exit 1; }

# Vultr Collection
ansible-galaxy collection list | grep -q "vultr.cloud" && echo "โœ… Vultr collection installed" || { echo "โŒ Vultr collection missing"; exit 1; }

# Credentials
[ -f "$HOME/ansible/group_vars/all/vultr.yml" ] && echo "โœ… vultr.yml exists" || { echo "โŒ vultr.yml missing"; exit 1; }

grep -q "vultr_api_key" "$HOME/ansible/group_vars/all/vultr.yml" && echo "โœ… Vultr API key present" || { echo "โŒ API key missing"; exit 1; }

# ansible.cfg
[ -f "$HOME/ansible/ansible.cfg" ] && echo "โœ… ansible.cfg found" || { echo "โŒ ansible.cfg missing"; exit 1; }

# SSH Key
[ -f "$HOME/.ssh/id_ed25519" ] && echo "โœ… SSH key found" || { echo "โŒ SSH key missing"; exit 1; }

# Inventory
[ -f "$HOME/ansible/inventories/hosts.ini" ] && echo "โœ… Inventory hosts.ini found" || { echo "โŒ hosts.ini missing"; exit 1; }

echo "========== Preflight Passed โœ… =========="

Make it executable:

chmod +x ~/ansible/preflight-check.sh
~/ansible/preflight-check.sh

โœ… Install jq & Create Vultr ID Extractor

sudo dnf install jq -y
cd ~/ansible
nano get-vultr-key-id.sh

Paste this:

#!/bin/bash
read -p "Enter your Vultr API key: " APIKEY

curl -s -H "Authorization: Bearer $APIKEY" https://api.vultr.com/v2/ssh-keys | \
  jq -r '.ssh_keys[] | "\(.name): \(.id)"'

Make executable:

chmod +x ~/ansible/get-vultr-key-id.sh
~/ansible/get-vultr-key-id.sh

โœ… Vultr Credentials File Reminder

In ~/ansible/group_vars/all/vultr.yml:

vultr_api_key: "YOUR-VALID-API-KEY"
vultr_ssh_key_id: "YOUR-SSH-KEY-ID"

โœ… Optional: WSL AlmaLinux GUI Layer

Add Nautilus & GNOME utilities for occasional visual file management:

sudo dnf groupinstall "Server with GUI" -y
sudo dnf install xorg-x11-server-Xorg mesa-dri-drivers vulkan vulkan-loader -y
sudo dnf install gnome-terminal nautilus gedit xeyes -y

Run Nautilus:

nautilus &

๐Ÿงฎ Resource Notes

  • Download: ~900 MB
  • Disk usage: ~2 GB total
  • Uses RAM only when GUI apps run

๐ŸŽฏ Summary

โœ… You now have:

  • Full Ansible preflight checks
  • Vultr SSH Key ID extractor
  • Optional Nautilus GUI for easier YAML editing & file management
  • Zero impact on production automation