Установите MongoDB с помощью Vagrant в Linux
Vagrant — это программное обеспечение с открытым исходным кодом, которое обеспечивает чистую, простую в настройке, воспроизводимую и переносимую среду разработки. Используя Vagrant, мы можем легко и быстро создавать и поддерживать различные виртуальные среды разработки программного обеспечения. В этом руководстве мы увидим, как установить mongoDB с помощью Vagrant в операционной системе Linux.
Что такое монгоДБ?
MongoDB — это документо-ориентированная база данных NoSQL, используемая, когда вам приходится обрабатывать огромные данные. MongoDB использует коллекции и документы для хранения данных. Документы представляют собой набор пар ключ-значение (JSON), хранящихся в коллекциях.
Ниже приведен образец документа в формате JSON
для справки.
{
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
}
Самая последняя версия mongoDB — 5. MongoDB доступен в двух вариантах: версия для сообщества и версия для предприятий. В этой статье мы установим версию сообщества mongoDB 5 с помощью Vagrant в Linux.
Предварительные условия
Прежде чем перейти к следующим шагам, убедитесь, что на вашем компьютере с Linux установлены Oracle VirtualBox и Vagrant. Oracle VirtualBox доступен в официальных репозиториях популярных дистрибутивов Linux, поэтому вы можете установить его, используя менеджер пакетов вашего дистрибутива по умолчанию.
Затем установите Vagrant в свою систему Linux, как описано в следующей ссылке.
- Как установить Vagrant в Linux
Инициализировать среду Vagrant
Для целей данного руководства я буду использовать Oracle Virtualbox в качестве гипервизора, который является поставщиком по умолчанию для Vagrant. И я использую Ubuntu 20.04 Vagrant для развертывания в нем mongoDB.
Создайте новый каталог проекта для MongoB.
$mkdir mongodb_vagrant
Перейдите в каталог проекта и инициализируйте бродячую среду, выполнив следующую команду:
cd mongodb_vagrant
vagrant init -m "ubuntu\focal64"
Это создаст новый Vagrantfile в каталоге проекта. Откройте Vagrantfile в вашем любимом редакторе и скопируйте в него следующие строки:
-*- 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
Позвольте мне объяснить важные параметры в приведенном выше коде.
Параметр vm.box
указывает на базовый дистрибутив Linux, который мы используем для установки MongoDB. В нашем случае это Ubuntu 20.04 LTS.
config.vm.box = "ubuntu/focal64"
Каждый раз, когда вы загружаете виртуальную машину, Vagrant проверяет наличие каких-либо обновлений для используемой машины. Установка параметра box_check_update=false
отключит проверку обновлений. Это необязательно! Если вы предпочитаете обновлять Vagrant box, вы можете удалить эту строку:
config.vm.box_check_update = false
Каждой бродячей виртуальной машине присваивается имя default
. Параметр vm.define
можно использовать для присвоения виртуальной машине собственного имени. В данном случае я установил имя MongoDB5
.
config.vm.define "MongoDB5"
Вы можете запустить команду global-status
, чтобы проверить имя, назначенное виртуальной машине:
$ vagrant global-status --prune
id name provider state directory
--------------------------------------------------------------------------------------------
76c3e81 MongoDB5 virtualbox running /home/karthick/Work/Lab/vagrant/mongodb_vagrant
Следующий параметр определяет, как будет настроена сеть для вашей виртуальной машины.
config.vm.network "public_network"
Я настроил Public_network
. Я также не указал имя интерфейса, поскольку оно может отличаться, и во время vagrant up
будет предложено подключиться к интерфейсу, как показано в выводе журнала ниже.
==> 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)
Я использовал поставщик оболочки для установки и настройки MongoDB. Имя сценария — mongo-bootstrap.sh
. Вы можете назвать скрипт по своему усмотрению.
config.vm.provision "shell", path: "mongo-bootstrap.sh"
Следующие параметры позволят настроить память и процессор для вашей виртуальной машины. Я установил память на 2 ГБ и 2 Vcore. Вы можете увеличивать и уменьшать значения, изменяя параметры v.memory
и v.cpus
.
config.vm.provider "virtualbox" do |v|
v.memory = 2048
v.cpus = 2
v.name = "MongoDB-5"
end
Имя, присвоенное параметру v.name
, будет отображаться в графическом интерфейсе вашего Virtualbox.
Имя VBox
Создать сценарий начальной загрузки
Как я уже говорил ранее, поставщик оболочки используется для установки и настройки mongoDB в vagrant box.
Создайте файл с именем mongo-bootstrap.sh
:
vi mongo-bootstrap.sh
И добавьте в него следующий фрагмент кода:
#!/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
Нажмите ESC
и введите :wq
, чтобы сохранить файл и закрыть его.
Позвольте мне дать вам краткое описание каждого раздела приведенного выше кода.
По умолчанию в Ubuntu поставляется более старая версия mongoDB. Если вам нужна последняя версия mongodDB, вам необходимо добавить официальный репозиторий в файл mongo-bootstrap.sh
.
Следующий раздел кода позаботится о добавлении репозитория, обновлении индекса пакета, установке mongoDB и запуске демона mongod
.
Добавить официальный репозиторий mongodb
Следующий блок кода создаст бродячего пользователя с правами администратора. Имя пользователя будет vagrant
, а пароль также будет установлен на vagrant
. При желании вы можете установить другое имя пользователя и пароль.
Создать пользователя Vagrant
По умолчанию политика безопасности не применяется. Любой пользователь может вызвать оболочку mongosh
и начать использовать базу данных. Чтобы обеспечить управление доступом на основе ролей, в файл /etc/mongod.conf
необходимо добавить следующий параметр.
Этот фрагмент кода позаботится о добавлении параметра и перезапустит демон mongod
, чтобы изменения вступили в силу.
Включить авторизацию
Внимание! Прежде чем включать RBAC (управление доступом на основе ролей), необходимо создать пользователя-администратора, чтобы он/она мог предоставлять доступ другим пользователям в любой базе данных.
Запустите машину mongoDB Vagrant.
После создания файла Vagrant и сценария начальной загрузки вы можете запустить виртуальную машину, выполнив следующую команду:
vagrant up
Теперь подождите, пока машина загрузится, а часть установки и настройки mongoDB будет выполнена с помощью сценария начальной загрузки. Это займет пару минут.
Чтобы войти в виртуальную машину, выполните следующую команду:
vagrant ssh
MongoDB прослушивает порт 27017
. Вы можете использовать команду netstat
, чтобы проверить, находится ли порт в состоянии прослушивания.
sudo netstat -tlnup
Пример вывода:
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
Выполните следующую команду, чтобы проверить состояние службы mongod
:
systemctl status mongod
Пример вывода:
● 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
Доступ к оболочке mongoDB
Оболочка mongo — это клиент cli для подключения к mongoDB. Теперь он заменен новым клиентом cli mongosh
из mongoDB V5.
Запустите mongosh
в терминале, чтобы начать использовать оболочку. Поскольку RBAC включен, вам необходимо предоставить учетные данные.
Вы можете подключиться к базе данных MongoDB, используя monosh
, используя следующую строку подключения.
mongosh mongodb://<username>:<password>@localhost:<port>/<database>
Здесь я подключаюсь к недавно созданному бродячему пользователю.
mongosh mongodb://vagrant:vagrant@localhost:27017/admin
Альтернативно вы можете запустить оболочку и выполнить следующие команды для подключения:
monosh
use admin
db.auth("username","password")
db.auth("vagrant","vagrant")
Подключитесь к базе данных MongoDB как пользователь Vagrant.
Управление бродячим ящиком mongoDB из командной строки
Следующие бродячие команды помогут вам управлять виртуальной машиной mongoDB через 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
Более подробную информацию об использовании команд Vagrant можно найти в нашем руководстве по Vagrant:
- Руководство по Vagrant. Начало работы с Vagrant в Linux
Заключение
В этом пошаговом руководстве мы увидели, как легко настроить mongoDB в Ubuntu 20.04 Vagrant. Если вы тестируете проект mongoDB или изучаете mongoDB, вы можете быстро развернуть коробку Vagrant и установить mongodDB в коробку Vagrant, как описано здесь.