Passa al contenuto principale
Versione: 0.5.5

Nexus Repository su Aruba Cloud

Distribuisci Sonatype Nexus Repository OSS — un registry universale di artefatti con supporto per Maven, npm, Docker, PyPI, RubyGems e altro — su Aruba Cloud tramite Terraform e cloud-init.

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


Introduzione​

Nexus Repository OSS è il gestore di artefatti open-source più diffuso. Gira sulla JVM con un database integrato e non richiede un database esterno. Questo esempio distribuisce:

  • Nexus Repository OSS tramite l'immagine Docker ufficiale su una VM CSO4A8
  • Storage persistente degli artefatti su /opt/nexus-data (volume host)
  • Interfaccia web e API sulla porta 8081
  • Registry Docker opzionale sulla porta 8082 (enable_docker_registry = true)
  • Password admin auto-generata recuperata dopo il bootstrap

Avvio JVM: Nexus impiega 2–3 minuti per avviarsi. Il health-check cloud-init attende automaticamente.


Panoramica dell'architettura​


Infrastruttura creata​

RisorsaPattern nomeDescrizione
arubacloud_projectnexus-prodContenitore progetto
arubacloud_vpcnexus-prod-vpcVirtual Private Cloud
arubacloud_subnetnexus-prod-subnetSubnet di base
arubacloud_securitygroupnexus-prod-vm-sgSecurity group
arubacloud_securityrulenexus-prod-vm-sshIngresso SSH (22)
arubacloud_securityrulenexus-prod-vm-httpIngresso interfaccia web Nexus (8081)
arubacloud_securityrulenexus-prod-vm-dockerIngresso registry Docker (8082, opzionale)
arubacloud_elasticipnexus-prod-vm-eipIP pubblico VM
arubacloud_blockstoragenexus-prod-bootDisco di avvio 100 GB (Performance)
arubacloud_keypairnexus-prod-keypairChiave SSH pubblica
arubacloud_cloudservernexus-prod-vmVM CloudServer

Costo mensile stimato​

RisorsaSpecificheCosto stimato/mese
CloudServer VMCSO4A8 — 4 vCPU / 8 GB~€40
Disco di avvio100 GB Performance~€15
Elastic IP—~€3
Totale~€58/mese

Variabili​

Obbligatorie​

VariabileDescrizione
arubacloud_client_idClient ID OAuth2 ArubaCloud
arubacloud_client_secretClient secret OAuth2 ArubaCloud

Opzionali​

VariabileDefaultDescrizione
ssh_public_keychiave del progettoContenuto della chiave SSH pubblica
app_name"nexus"Nome breve usato nei nomi delle risorse
environment"prod"Etichetta ambiente
location"ITBG-Bergamo"Regione ArubaCloud
zone"ITBG-1"Zona di disponibilità
billing_period"Hour""Hour" o "Month"
vm_flavor"CSO4A8"Flavor CloudServer (min 4 GB RAM per JVM)
vm_disk_size_gb100Dimensione disco di avvio in GB (min 50)
ssh_cidr"0.0.0.0/0"CIDR per accesso SSH
nexus_version"latest"Tag immagine Docker Nexus
enable_docker_registryfalseApre la porta 8082 per il registry Docker

Output​

OutputDescrizione
nexus_urlURL interfaccia web Nexus
nexus_docker_registry_urlURL registry Docker (quando abilitato)
vm_public_ipIP pubblico della VM
ssh_commandComando SSH per connettersi
admin_password_commandComando per recuperare la password admin auto-generata

Istruzioni di distribuzione​

1. Clona e naviga​

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

2. Configura le variabili​

cp terraform.tfvars.example terraform.tfvars

3. Distribuisci​

terraform init
terraform plan
terraform apply

Il bootstrap richiede circa 3–5 minuti (avvio JVM).

4. Recupera la password admin​

ssh ubuntu@<vm_public_ip> 'docker exec nexus cat /nexus-data/admin.password'

Oppure usa l'output Terraform admin_password_command.

5. Primo accesso​

Vai su http://<vm_public_ip>:8081, accedi con admin e la password recuperata, poi completa il wizard di configurazione. Il file admin.password viene eliminato automaticamente dopo il primo accesso.


Abilitazione del registry Docker​

Imposta enable_docker_registry = true in terraform.tfvars, poi ri-applica. Dopo l'apply:

  1. Accedi all'interfaccia web di Nexus
  2. Crea un nuovo repository hosted di tipo docker (hosted) sulla porta HTTP 8082
  3. Invia immagini: docker push <ip_vm>:8082/mia-immagine:tag

Riferimenti​