Passa al contenuto principale
Versione: 0.5.6

Drupal su Aruba Cloud

Esegui il deployment di Drupal 10 — un CMS open-source flessibile e di livello enterprise — su Aruba Cloud tramite Terraform e cloud-init. Drupal viene installato tramite Composer con un backend MySQL 8.0 DBaaS gestito, seguendo lo stesso pattern di produzione dell'esempio WordPress.

Versione provider: arubacloud/arubacloud ~> 1.0 | Terraform: ≥ 1.9


Introduzione​

Drupal 10 è basato sul template Composer drupal/recommended-project, che include Drupal core, Drush (la CLI di Drupal) e impostazioni predefinite sensate per la produzione. Questo esempio esegue il provisioning di:

  • Apache2 + PHP 8.1 con tutte le estensioni richieste da Drupal
  • Drupal 10 installato tramite Composer + Drush in modalità completamente non presidiata
  • MySQL 8.0 gestito tramite ArubaCloud DBaaS — Drupal non interagisce mai con SQL grezzo
  • Porte 80 e 443 aperte a internet
  • HTTPS opzionale tramite Let's Encrypt quando domain è impostato

Tempo di bootstrap: Composer scarica ~80 MB di pacchetti PHP. Prevedi 15–20 minuti prima che il sito sia raggiungibile.


Panoramica dell'architettura​


Infrastruttura creata​

RisorsaPattern del nomeDescrizione
arubacloud_projectdrupal-prodContenitore del progetto
arubacloud_vpcdrupal-prod-vpcVirtual Private Cloud
arubacloud_subnetdrupal-prod-subnetSubnet base
arubacloud_securitygroupdrupal-prod-vm-sgSecurity group VM
arubacloud_securitygroupdrupal-prod-dbaas-sgSecurity group DBaaS
arubacloud_securityruledrupal-prod-vm-sshRegola ingress SSH
arubacloud_securityruledrupal-prod-vm-httpRegola ingress HTTP TCP 80
arubacloud_securityruledrupal-prod-vm-httpsRegola ingress HTTPS TCP 443
arubacloud_securityruledrupal-prod-db-mysqlRegola ingress MySQL solo dall'IP VM
arubacloud_elasticipdrupal-prod-vm-eipIP pubblico VM
arubacloud_elasticipdrupal-prod-dbaas-eipIP pubblico DBaaS
arubacloud_blockstoragedrupal-prod-bootDisco di boot da 40 GB (Performance)
arubacloud_keypairdrupal-prod-keypairChiave pubblica SSH
arubacloud_dbaasdrupal-prod-dbaasMySQL 8.0 gestito
arubacloud_databasedrupalDatabase Drupal
arubacloud_dbaasuserdrupalUtente DB Drupal
arubacloud_cloudserverdrupal-prod-vmVM CloudServer

Costo mensile stimato​

RisorsaSpecificheCosto stimato/mese
VM CloudServerCSO4A8 — 4 vCPU / 8 GB~€35
Disco di boot40 GB Performance~€6
Elastic IP (VM)—~€3
MySQL DBaaSDBO2A8 + 20 GB~€30
Elastic IP (DBaaS)—~€3
Totale~€77/mese

Requisiti​

  • Terraform ≥ 1.9
  • ArubaCloud Terraform Provider ~> 1.0
  • Un account ArubaCloud con credenziali API OAuth2
  • Una coppia di chiavi SSH

Variabili​

Obbligatorie​

VariabileDescrizione
arubacloud_client_idClient ID OAuth2 di ArubaCloud
arubacloud_client_secretClient secret OAuth2 di ArubaCloud
ssh_public_keyContenuto della chiave pubblica SSH
db_passwordPassword utente MySQL Drupal (min 16 caratteri)
admin_emailIndirizzo email dell'amministratore Drupal
admin_passwordPassword amministratore Drupal (min 16 caratteri)

Opzionali​

VariabileDefaultDescrizione
app_name"drupal"Nome breve usato in tutti i nomi delle risorse
environment"prod"Etichetta dell'ambiente
location"ITBG-Bergamo"Regione ArubaCloud
zone"ITBG-1"Zona di disponibilità
billing_period"Hour""Hour" o "Month"
vm_flavor"CSO4A8"Flavor del CloudServer
vm_image"LU22-001"Immagine del disco di boot (Ubuntu 22.04 LTS)
vm_disk_size_gb40Dimensione del disco di boot in GB
ssh_cidr"0.0.0.0/0"CIDR per SSH — limita in produzione
dbaas_flavor"DBO2A8"Flavor istanza DBaaS
db_storage_gb20Dimensione storage iniziale DBaaS in GB
site_name"My Drupal Site"Nome visualizzato del sito
admin_user"admin"Nome utente amministratore Drupal
domain""Dominio per HTTPS automatico con Let's Encrypt

Output​

OutputDescrizione
site_urlURL del sito Drupal
admin_urlURL di accesso admin Drupal
vm_public_ipIndirizzo IP pubblico della VM
ssh_commandComando SSH per connettersi alla VM
db_hostIndirizzo host MySQL DBaaS

Istruzioni di deployment​

1. Clona e naviga​

git clone https://github.com/arubacloud/terraform-arubacloud-examples.git
cd terraform-arubacloud-examples/drupal

2. Configura le variabili​

cp terraform.tfvars.example terraform.tfvars

Imposta credenziali, password ed email admin:

db_password = "your-strong-db-password"
admin_email = "admin@example.com"
admin_password = "your-strong-admin-password"

3. Esegui il deployment​

terraform init
terraform plan
terraform apply

Il bootstrap richiede 15–20 minuti — il download di Composer e il provisioning del DBaaS vengono eseguiti in parallelo.

4. Accedi a Drupal​

terraform output site_url
terraform output admin_url

Accedi con admin_user e admin_password.


Risoluzione dei problemi​

Il sito non si carica dopo apply​

Il bootstrap è ancora in esecuzione. Controlla il progresso:

ssh ubuntu@$(terraform output -raw vm_public_ip)
sudo tail -f /var/log/cloud-init-output.log

Installazione Drush site:install fallita​

Verifica se il DBaaS era raggiungibile:

nc -zv $(terraform output -raw db_host) 3306
sudo cat /var/log/cloud-init-output.log | grep -A5 "ERROR\|Waiting"

Riferimenti​