Ricerca nel sito web

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.

Articoli correlati