Installa MongoDB usando Vagrant in Linux
Vagrant è un software open source che fornisce un ambiente di sviluppo pulito, facile da configurare, riproducibile e portatile. Utilizzando Vagrant, possiamo creare e mantenere facilmente e rapidamente diversi ambienti di sviluppo software virtuale. In questa guida vedremo come installare mongoDB utilizzando Vagrant nel sistema operativo Linux.
Cos'è mongoDB?
MongoDB è un database NoSQL orientato ai documenti utilizzato quando è necessario gestire dati enormi. MongoDB utilizza raccolte e documenti per archiviare i dati. I documenti sono un insieme di coppie chiave-valore (JSON) archiviate in raccolte.
Di seguito è riportato un documento di esempio in formato JSON
come riferimento.
{
title: 'Install MongoDB-5 In Linux Using Vagrant',
url: 'https://ostechnix.com/',
Site: 'ostechnix',
owner: 'sk',
author: 'Karthick',
tags: ['community Edition', 'Linux', 'NoSQL', 'MongoDB5'],
mongo_version: 5
}
La versione più recente di mongoDB è 5. MongoDB è disponibile in due varianti: edizione community ed edizione enterprise. In questo articolo installeremo l'edizione della community mongoDB 5 utilizzando Vagrant in Linux.
Prerequisiti
Prima di procedere con i passaggi successivi, assicurati di aver installato Oracle VirtualBox e Vagrant sulla tua macchina Linux. Oracle VirtualBox è disponibile nei repository ufficiali delle distribuzioni Linux più diffuse, quindi puoi installarlo utilizzando il gestore pacchetti predefinito della tua distribuzione.
Quindi installa Vagrant sul tuo sistema Linux come descritto nel seguente collegamento.
- Come installare Vagrant su Linux
Inizializza l'ambiente Vagrant
Ai fini di questa guida, utilizzerò Oracle Virtualbox come hypervisor, che è il provider predefinito per Vagrant. E sto usando Ubuntu 20.04 Vagrant box per distribuirvi mongoDB.
Crea una nuova directory di progetto per MongoB.
$mkdir mongodb_vagrant
Passa alla directory del progetto e inizializza l'ambiente vagabondo eseguendo il seguente comando:
cd mongodb_vagrant
vagrant init -m "ubuntu\focal64"
Questo creerà un nuovo Vagrantfile nella directory del progetto. Apri il Vagrantfile nel tuo editor preferito e copia/incolla al suo interno le seguenti righe:
-*- mode: ruby -*-
vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"
config.vm.box_check_update = false
config.vm.define "MongoDB5"
config.vm.network "public_network"
config.vm.provision "shell", path: "mongo-bootstrap.sh"
config.vm.provider "virtualbox" do |v|
v.memory = 2048
v.cpus = 2
v.name = "MongoDB-5"
end
end
Permettetemi di spiegare i parametri importanti nel codice sopra.
Il parametro vm.box
punta alla distribuzione Linux sottostante che utilizziamo per installare MongoDB. Nel nostro caso si tratta di Ubuntu 20.04 LTS.
config.vm.box = "ubuntu/focal64"
Ogni volta che avvii la VM, Vagrant controllerà se sono presenti aggiornamenti per la macchina utilizzata. L'impostazione del parametro box_check_update=false
disabiliterà il controllo degli aggiornamenti. Questo è facoltativo! Se preferisci aggiornare la casella Vagrant, puoi rimuovere questa riga:
config.vm.box_check_update = false
A ogni VM vagante viene assegnato il nome default
. Il parametro vm.define
può essere utilizzato per impostare un nome personalizzato per la tua VM. In questo caso, ho impostato il nome su MongoDB5
.
config.vm.define "MongoDB5"
Puoi eseguire il comando global-status
per verificare il nome assegnato alla VM:
$ vagrant global-status --prune
id name provider state directory
--------------------------------------------------------------------------------------------
76c3e81 MongoDB5 virtualbox running /home/karthick/Work/Lab/vagrant/mongodb_vagrant
Il seguente parametro decide come verrà configurata la rete per la tua VM.
config.vm.network "public_network"
Ho configurato Public_network
. Inoltre, non ho fornito il nome dell'interfaccia poiché potrebbe variare e l'interfaccia da connettere verrà richiesta durante vagrant up
come mostrato nell'output del registro di seguito.
==> MongoDB5: Available bridged network interfaces:
1) wlo1
2) eno1
3) docker0
==> MongoDB5: When choosing an interface, it is usually the one that is
==> MongoDB5: being used to connect to the internet.
==> MongoDB5:
MongoDB5: Which interface should the network bridge to? 1
==> MongoDB5: Preparing network interfaces based on configuration...
MongoDB5: Adapter 1: nat
MongoDB5: Adapter 2: bridged
==> MongoDB5: Forwarding ports...
MongoDB5: 22 (guest) => 2222 (host) (adapter 1)
Ho utilizzato il provisioner della shell per installare e configurare MongoDB. Il nome dello script è mongo-bootstrap.sh
. Puoi nominare lo script come desideri.
config.vm.provision "shell", path: "mongo-bootstrap.sh"
I seguenti parametri configureranno la memoria e la CPU per la tua macchina virtuale. Ho impostato la memoria su 2gigs e 2 Vcore. È possibile aumentare e diminuire i valori modificando i parametri v.memory
e v.cpus
.
config.vm.provider "virtualbox" do |v|
v.memory = 2048
v.cpus = 2
v.name = "MongoDB-5"
end
Il nome assegnato al parametro v.name
è quello che verrà visualizzato nella GUI di Virtualbox.
Nome del VBox
Crea uno script di shell bootstrap
Come ho affermato in precedenza, per installare e configurare mongoDB nel vagrant box viene utilizzato uno shell provisioner.
Crea un file chiamato mongo-bootstrap.sh
:
vi mongo-bootstrap.sh
E aggiungi il seguente pezzo di codice al suo interno:
#!/usr/bin/env bash
Adding Repo
echo "-------------------------- ADDING REPO -------------------------------------"
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
Updating Package Index and Installing MongoDB-5
echo "-------------------------- UPDATING PACKAGE INDEX -------------------------------------"
sudo apt update
echo "-------------------------- INSTALL PACKAGES --------------------------"
sudo apt install -y mongodb-org net-tools
Start and Enable Mongod
echo "-------------------------- START & ENABLE MONGOD --------------------------"
sudo systemctl enable --now mongod
sleep 20
Create user
echo "-------------------------- CREATE VAGRANT USER --------------------------"
mongosh << BLK
use admin
db.createUser(
{
user: "vagrant",
pwd: "vagrant",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "clusterAdmin", db: "admin" }
]
})
exit
BLK
## Enable Authorization
sudo cat << EOB >> /etc/mongod.conf
#security:
security:
authorization: "enabled"
EOB
echo "-------------------------- RESTARTED MONGOD --------------------------"
sudo systemctl restart mongod
Premi ESC
e digita :wq
per salvare il file e chiuderlo.
Lascia che ti fornisca una breve descrizione di ciascuna sezione nel codice precedente.
Per impostazione predefinita, esiste una versione precedente di mongoDB fornita con Ubuntu. Se desideri l'ultima versione di mongodDB, devi aggiungere il repository ufficiale nel file mongo-bootstrap.sh
.
La seguente sezione di codice si occuperà di aggiungere il repository, aggiornare l'indice del pacchetto, installare mongoDB e attivare il demone mongod
.
Aggiungi il repository ufficiale mongodb
Il seguente blocco di codice creerà un utente vagabondo con privilegi di amministratore. Il nome utente sarà vagrant
e anche la password sarà impostata su vagrant
. Se lo desideri, puoi impostare un nome utente e una password diversi.
Crea utente Vagrant
Per impostazione predefinita, non viene applicata alcuna politica di sicurezza. Qualsiasi utente può invocare la shell mongosh
e iniziare a utilizzare il database. Per applicare il controllo degli accessi basato sui ruoli, è necessario aggiungere il seguente parametro al file /etc/mongod.conf
.
Questo pezzo di codice si occuperà di aggiungere il parametro e riavviare il demone mongod
affinché le modifiche abbiano effetto.
Abilita autorizzazione
Avviso: prima di abilitare RBAC (controllo degli accessi basato sui ruoli), è necessario creare un utente amministratore, in modo che possa concedere l'accesso ad altri utenti in qualsiasi database.
Avvia la macchina Vagrant mongoDB
Una volta creati il file Vagrant e lo script bootstrap, puoi avviare la VM eseguendo il seguente comando:
vagrant up
Ora attendi fino all'avvio della macchina e la parte di installazione e configurazione di mongoDB viene gestita dallo script bootstrap. Ci vorranno un paio di minuti.
Per accedere alla VM, eseguire il comando seguente:
vagrant ssh
MongoDB è in ascolto sulla porta 27017
. Puoi utilizzare il comando netstat
per verificare se la porta è in stato di ascolto.
sudo netstat -tlnup
Esempio di output:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 3306/mongod
Esegui il comando seguente per verificare lo stato del servizio mongod
:
systemctl status mongod
Esempio di output:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-08-17 10:24:36 UTC; 2h 21min ago
Docs: https://docs.mongodb.org/manual
Main PID: 3306 (mongod)
Memory: 162.3M
CGroup: /system.slice/mongod.service
└─3306 /usr/bin/mongod --config /etc/mongod.conf
Accedi alla shell mongoDB
La mongo shell è un client CLI per connettersi a mongoDB. Ora è sostituito con un nuovo client CLI mongosh
da mongoDB V5.
Esegui mongosh
nel terminale per iniziare a utilizzare la shell. Poiché RBAC è abilitato, devi fornire le credenziali.
Puoi connetterti al database MongoDB utilizzando monosh
utilizzando la seguente stringa di connessione.
mongosh mongodb://<username>:<password>@localhost:<port>/<database>
Qui mi connetto con un utente vagabondo appena creato.
mongosh mongodb://vagrant:vagrant@localhost:27017/admin
In alternativa, puoi avviare la shell ed eseguire i seguenti comandi per connetterti:
monosh
use admin
db.auth("username","password")
db.auth("vagrant","vagrant")
Connettiti al database MongoDB come utente Vagrant
Gestisci la casella vagante mongoDB dalla riga di comando
I seguenti comandi vagrant ti aiuteranno a gestire la VM mongoDB tramite CLI:
vagrant --global-status --prune # check the status of the machine
vagrant halt # Stop the VM
vagrant destroy # Destroy the VM and associated VM disk.
vagrant ssh # Login to Remote Host
Per un utilizzo più dettagliato dei comandi Vagrant, fare riferimento al nostro tutorial Vagrant:
- Tutorial su Vagrant - Come iniziare con Vagrant in Linux
Conclusione
In questa guida passo passo, abbiamo visto come configurare facilmente mongoDB in Ubuntu 20.04 Vagrant box. Se stai testando un progetto mongoDB o stai imparando mongoDB, puoi avviare rapidamente un box Vagrant e installare mongodDB nel box Vagrant come descritto qui.