Vagabondo è 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 virtuali. In questa guida vedremo come installare mongoDB utilizzando Vagrant nel sistema operativo Linux.
Cos'è mongoDB?
MongoDB è un database NoSQL orientato ai documenti utilizzato quando devi gestire dati enormi. MongoDB utilizza raccolte e documenti per archiviare i dati. I documenti sono un insieme di coppie chiave-valore (JSON) archiviate nelle raccolte.
Di seguito è riportato un documento di esempio in JSON
formato 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:community edition ed enterprise edition. 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 nella tua macchina Linux. Oracle VirtualBox è disponibile nei repository ufficiali delle distribuzioni Linux più diffuse, quindi puoi installarlo utilizzando il gestore di pacchetti predefinito della tua distribuzione.
E poi, installa Vagrant sul tuo sistema Linux come descritto nel seguente link.
- 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 distribuire mongoDB in esso.
Crea una nuova directory di progetto per MongoB.
$ mkdir mongodb_vagabondo
Passa alla directory del progetto e inizializza l'ambiente vagabondo eseguendo il comando seguente:
$ 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 le seguenti righe al suo interno:
# -*- 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
Consentitemi 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, è Ubuntu 20.04 LTS.
config.vm.box = "ubuntu/focal64"
Ogni volta che avvii la VM, Vagrant verificherà se sono presenti aggiornamenti per la casella utilizzata. Impostazione del parametro box_check_update = false
disabiliterà il controllo degli aggiornamenti. Questo è facoltativo! Preferisci aggiornare la casella Vagrant, puoi rimuovere questa riga:
config.vm.box_check_update = false
Ogni VM vagabondo viene assegnata con default
come il nome. Il parametro vm.define
può essere usato per impostare un nome personalizzato per la tua macchina virtuale. In questo caso, ho impostato il nome su MongoDB5
.
config.vm.define "MongoDB5"
Puoi eseguire lo global-status
comando 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 parametro seguente decide come verrà configurata la rete per la tua VM.
config.vm.network "public_network"
Ho impostato Public_network
. Inoltre non ho fornito il nome dell'interfaccia poiché potrebbe variare e l'interfaccia da collegare verrà richiesta durante vagrant up
come mostrato nell'output del registro sottostante.
==> 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 usato 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 . Puoi aumentare e diminuire i valori modificando il v.memory
e v.cpus
parametri.
config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 2 v.name = "MongoDB-5" end
Il nome assegnato al parametro v.name
è ciò che verrà visualizzato nella GUI di Virtualbox.
Crea script di shell bootstrap
Come ho affermato in precedenza, viene utilizzato un provisioner della shell per l'installazione e la configurazione di mongoDB nella casella vagrant.
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 dia una breve descrizione di ciascuna sezione del codice sopra.
Per impostazione predefinita, esiste una versione precedente di mongoDB fornita con Ubuntu. Se vuoi l'ultima versione di mongodDB, devi aggiungere il repository ufficiale in mongo-bootstrap.sh
file.
La seguente sezione di codice si occuperà dell'aggiunta del repository, dell'aggiornamento dell'indice del pacchetto, dell'installazione di mongoDB e della visualizzazione di mongod
demone.
Il seguente blocco di codice creerà un utente vagabondo con privilegi di amministratore. Il nome utente sarà vagrant
e anche la password è impostata su vagrant
. Se lo desideri, puoi impostare un nome utente e una password diversi.
Per impostazione predefinita, non viene applicata alcuna politica di sicurezza. Qualsiasi utente può invocare mongosh
shell e iniziare a utilizzare il database. Per imporre il controllo dell'accesso basato sui ruoli, è necessario aggiungere il seguente parametro a /etc/mongod.conf
file.
Questo pezzo di codice si occuperà di aggiungere il parametro e riavviare mongod
demone per rendere effettive le modifiche.
Avviso: Prima di abilitare RBAC (Role based access control), è necessario creare un utente amministratore, in modo che possa concedere l'accesso ad altri utenti in qualsiasi database.
Avvia la macchina mongoDB Vagrant
Una volta creati il file Vagrant e lo script di bootstrap, puoi avviare la VM eseguendo il seguente comando:
$ vagrant up
Ora, attendi fino a quando la macchina non viene avviata e la parte di installazione e configurazione di mongoDB viene gestita dallo script bootstrap. Ci vorranno un paio di minuti.
Per accedere alla macchina virtuale, eseguire il comando seguente:
$ vagrant ssh
MongoDB è in ascolto sulla porta 27017
. Puoi utilizzare il netstat
comando per verificare se la porta è in stato di ascolto.
$ sudo netstat -tlnup
Risultato di esempio:
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 di mongod
servizio:
$ systemctl status mongod
Risultato di esempio:
● 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 conchiglia di mongo è 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 usare la shell. Poiché RBAC è abilitato, devi fornire le credenziali.
Puoi connetterti al database MongoDB usando monosh
utilizzando la seguente stringa di connessione.
$ mongosh mongodb://<username>:<password>@localhost:<port>/<database>
Qui mi sto connettendo con un utente vagabondo appena creato.
$ mongosh mongodb://vagrant:[email protected]: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")
Gestisci box vagrant mongoDB dalla riga di comando
I seguenti comandi vagabondi 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 di Vagrant – Introduzione a 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 creare rapidamente una casella Vagrant e installare mongodDB nella casella Vagrant come descritto qui.