Поиск по сайту:

Установите 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, как описано здесь.

Статьи по данной тематике