Vagrant je software s otevřeným zdrojovým kódem, který poskytuje čisté, snadno konfigurovatelné, reprodukovatelné a přenosné vývojové prostředí. Pomocí Vagrant můžeme snadno a rychle budovat a udržovat různá virtuální prostředí pro vývoj softwaru. V této příručce uvidíme, jak nainstalovat mongoDB pomocí Vagrant v operačním systému Linux.
Co je mongoDB?
MongoDB je NoSQL databáze orientovaná na dokumenty, která se používá, když musíte zpracovávat obrovské množství dat. MongoDB používá kolekce a dokumenty k ukládání dat. Dokumenty jsou sada párů klíč–hodnota (JSON) uložených ve sbírkách.
Níže je ukázkový dokument v JSON
formát pro vaši referenci.
{ 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 }
Nejnovější verze mongoDB je 5 . MongoDB je k dispozici ve dvou variantách – komunitní edici a podnikovou edici. V tomto článku nainstalujeme komunitní vydání mongoDB 5 pomocí Vagrant v Linuxu.
Předpoklady
Než přistoupíte k dalším krokům, ujistěte se, že jste do svého počítače se systémem Linux nainstalovali Oracle VirtualBox a Vagrant. Oracle VirtualBox je k dispozici v oficiálních repozitářích populárních distribucí Linuxu, takže jej můžete nainstalovat pomocí výchozího správce balíčků vaší distribuce.
A poté nainstalujte Vagrant do svého systému Linux, jak je popsáno v následujícím odkazu.
- Jak nainstalovat Vagrant na Linux
Inicializovat prostředí Vagrant
Pro účely této příručky budu jako hypervizor používat Oracle Virtualbox, což je výchozí poskytovatel pro Vagrant. A k nasazení mongoDB v něm používám Ubuntu 20.04 Vagrant box.
Vytvořte nový adresář projektu pro MongoB.
$ mkdir mongodb_vagrant
Přepněte se do adresáře projektu a inicializujte prostředí vagrant spuštěním následujícího příkazu:
$ cd mongodb_vagrant
$ vagrant init -m "ubuntu\focal64"
Tím se v adresáři projektu vytvoří nový soubor Vagrantfile. Otevřete soubor Vagrantfile ve svém oblíbeném editoru a zkopírujte/vložte do něj následující řádky:
# -*- 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
Dovolte mi vysvětlit důležité parametry ve výše uvedeném kódu.
Parametr vm.box
ukazuje na základní distribuci Linuxu, kterou používáme k instalaci MongoDB. V našem případě je to Ubuntu 20.04 LTS.
config.vm.box = "ubuntu/focal64"
Pokaždé, když spouštíte virtuální počítač, Vagrant zkontroluje, zda existuje nějaká aktualizace pro použitý box. Nastavení parametru box_check_update = false
vypne kontrolu aktualizací. Toto je volitelné! Dáváte přednost aktualizaci boxu Vagrant, můžete odstranit tento řádek:
config.vm.box_check_update = false
Každému virtuálnímu počítači tuláka je přiřazeno default
jako jméno. Parametr vm.define
lze použít k nastavení vlastního názvu vašeho virtuálního počítače. V tomto případě jsem nastavil název na MongoDB5
.
config.vm.define "MongoDB5"
Můžete spustit global-status
příkaz ke kontrole názvu přiřazeného virtuálnímu počítači:
$ vagrant global-status --prune id name provider state directory -------------------------------------------------------------------------------------------- 76c3e81 MongoDB5 virtualbox running /home/karthick/Work/Lab/vagrant/mongodb_vagrant
Následující parametr rozhoduje o tom, jak bude síť nastavena pro váš VM.
config.vm.network "public_network"
Nastavil jsem Public_network
. Neuvedl jsem ani název rozhraní, protože se může lišit a rozhraní, které se má připojit, bude vyzváno během vagrant up
jak je uvedeno ve výstupu protokolu níže.
==> 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)
K instalaci a nastavení MongoDB jsem použil shell Provider. Název skriptu je mongo-bootstrap.sh
. Skript můžete pojmenovat, jak chcete.
config.vm.provision "shell", path: "mongo-bootstrap.sh"
Následující parametry nakonfigurují paměť a CPU pro váš virtuální počítač. Nastavil jsem paměť na 2gigs a 2 Vcore . Hodnoty můžete zvýšit a snížit úpravou v.memory
a v.cpus
parametry.
config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 2 v.name = "MongoDB-5" end
Název přiřazený parametru v.name
je to, co se zobrazí ve vašem GUI Virtualboxu.

Vytvořit bootstrap shell skript
Jak jsem uvedl dříve, pro instalaci a konfiguraci mongoDB v krabici vagrant se používá shell Provider.
Vytvořte soubor s názvem mongo-bootstrap.sh
:
$ vi mongo-bootstrap.sh
A přidejte do něj následující část kódu:
#!/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
Stiskněte ESC
a zadejte :wq
uložte soubor a zavřete jej.
Dovolte mi, abych vám stručně popsal každou část výše uvedeného kódu.
Ve výchozím nastavení existuje starší verze mongoDB, která se dodává s Ubuntu. Pokud chcete nejnovější verzi mongodDB, musíte přidat oficiální úložiště do mongo-bootstrap.sh
soubor.
Následující část kódu se postará o přidání úložiště, aktualizaci indexu balíčku, instalaci mongoDB a vyvolání mongod
démon.

Následující blok kódu vytvoří tuláka uživatele s oprávněními správce. Uživatelské jméno bude vagrant
a heslo je také nastaveno na vagrant
. Pokud chcete, můžete nastavit jiné uživatelské jméno a heslo.

Ve výchozím nastavení není vynucena žádná bezpečnostní politika. Každý uživatel může vyvolat mongosh
shell a začít používat databázi. Chcete-li vynutit řízení přístupu na základě rolí, měl by být do /etc/mongod.conf
přidán následující parametr soubor.
Tento kus kódu se postará o přidání parametru a restartování mongod
aby byly změny účinné.

Pozor: Před povolením RBAC (Role based access control) by měl být vytvořen administrátor, aby mohl udělovat přístup dalším uživatelům v jakékoli databázi.
Spusťte stroj mongoDB Vagrant
Po vytvoření souboru Vagrant a bootstrap skriptu můžete spustit VM spuštěním následujícího příkazu:
$ vagrant up
Nyní počkejte, až se počítač nabootuje a o instalaci a konfiguraci mongoDB se postará bootstrap skript. Bude to pár minut trvat.
Chcete-li se přihlásit k virtuálnímu počítači, spusťte následující příkaz:
$ vagrant ssh
MongoDB naslouchá na portu 27017
. Můžete použít netstat
příkaz ke kontrole, zda je port ve stavu naslouchání.
$ sudo netstat -tlnup
Ukázkový výstup:
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
Spuštěním následujícího příkazu zkontrolujte stav mongod
služba:
$ systemctl status mongod
Ukázkový výstup:
● 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
Přístup k prostředí mongoDB
mongo shell je cli klient pro připojení k mongoDB. Nyní je nahrazen novým klientem cli mongosh
z mongoDB V5.
Spusťte mongosh
v terminálu, abyste mohli začít používat shell. Protože je povoleno RBAC, musíte zadat přihlašovací údaje.
K databázi MongoDB se můžete připojit pomocí monosh
pomocí následujícího připojovacího řetězce.
$ mongosh mongodb://<username>:<password>@localhost:<port>/<database>
Zde se připojuji k nově vytvořenému tulákovému uživateli.
$ mongosh mongodb://vagrant:[email protected]:27017/admin
Případně můžete spustit shell a spustit následující příkazy pro připojení:
$ monosh
$ use admin
$ db.auth("username","password")
$ db.auth("vagrant","vagrant")

Spravujte mongoDB vagrant box z příkazového řádku
Následující příkazy tuláků vám pomohou spravovat virtuální počítač mongoDB prostřednictvím rozhraní 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
Podrobnější informace o použití příkazů Vagrant najdete v našem výukovém programu Vagrant:
- Výukový program Vagrant – Začínáme s Vagrant v Linuxu
Závěr
V tomto průvodci krok za krokem jsme viděli, jak snadno nastavit mongoDB v Ubuntu 20.04 Vagrant box. Pokud testujete projekt mongoDB nebo se učíte mongoDB, můžete rychle roztočit krabici Vagrant a nainstalovat mongodDB do krabice Vagrant, jak je popsáno zde.