vagabundo es un software de código abierto que proporciona un entorno de desarrollo limpio, fácil de configurar, reproducible y portátil. Usando Vagrant, podemos crear y mantener diferentes entornos de desarrollo de software virtual de manera fácil y rápida. En esta guía, veremos cómo instalar mongoDB usando Vagrant en el sistema operativo Linux.
¿Qué es mongoDB?
MongoDB es una base de datos orientada a documentos NoSQL que se usa cuando tiene que manejar datos descomunales. MongoDB utiliza colecciones y documentos para almacenar los datos. Los documentos son un conjunto de pares clave-valor (JSON) almacenados en colecciones.
A continuación se muestra un documento de muestra en JSON
formato para su referencia.
{ 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 versión más reciente de mongoDB es 5 . MongoDB está disponible en dos variantes:edición comunitaria y edición empresarial. En este artículo, instalaremos la edición comunitaria mongoDB 5 usando Vagrant en Linux.
Requisitos
Antes de continuar con los siguientes pasos, asegúrese de haber instalado Oracle VirtualBox y Vagrant en su máquina Linux. Oracle VirtualBox está disponible en los repositorios oficiales de distribuciones populares de Linux, por lo que puede instalarlo utilizando el administrador de paquetes predeterminado de su distribución.
Y luego, instale Vagrant en su sistema Linux como se describe en el siguiente enlace.
- Cómo instalar Vagrant en Linux
Inicializar entorno Vagrant
A los efectos de esta guía, utilizaré Oracle Virtualbox como hipervisor, que es el proveedor predeterminado de Vagrant. Y estoy usando Ubuntu 20.04 Vagrant box para implementar mongoDB en él.
Cree un nuevo directorio de proyectos para MongoB.
$ mkdir mongodb_vagrant
Cambie al directorio del proyecto e inicialice el entorno vagabundo ejecutando el siguiente comando:
$ cd mongodb_vagrant
$ vagrant init -m "ubuntu\focal64"
Esto creará un nuevo Vagrantfile en el directorio del proyecto. Abra Vagrantfile en su editor favorito y copie/pegue las siguientes líneas en él:
# -*- 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
Permítame explicar los parámetros importantes en el código anterior.
El parámetro vm.box
apunta a la distribución de Linux subyacente que usamos para instalar MongoDB. En nuestro caso, es Ubuntu 20.04 LTS.
config.vm.box = "ubuntu/focal64"
Cada vez que inicie la VM, Vagrant verificará si hay alguna actualización para el cuadro que se utiliza. Configuración del parámetro box_check_update = false
deshabilitará la comprobación de actualizaciones. ¡Esto es opcional! Si prefiere actualizar el cuadro de Vagrant, puede eliminar esta línea:
config.vm.box_check_update = false
A cada VM vagabunda se le asigna default
como el nombre. El parámetro vm.define
se puede usar para establecer un nombre personalizado para su máquina virtual. En este caso, he establecido el nombre en MongoDB5
.
config.vm.define "MongoDB5"
Puede ejecutar el global-status
Comando para verificar el nombre asignado a la VM:
$ vagrant global-status --prune id name provider state directory -------------------------------------------------------------------------------------------- 76c3e81 MongoDB5 virtualbox running /home/karthick/Work/Lab/vagrant/mongodb_vagrant
El siguiente parámetro decide cómo se configurará la red para su VM.
config.vm.network "public_network"
He configurado Public_network
. Tampoco he proporcionado el nombre de la interfaz, ya que puede variar y la interfaz que se conectará se solicitará durante vagrant up
como se muestra en la siguiente salida de registro.
==> 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)
He usado el aprovisionador de shell para instalar y configurar MongoDB. El nombre del script es mongo-bootstrap.sh
. Puede nombrar el script como desee.
config.vm.provision "shell", path: "mongo-bootstrap.sh"
Los siguientes parámetros configurarán la memoria y la CPU para su máquina virtual. He configurado la memoria en 2 gigas y 2 Vcores . Puede aumentar y disminuir los valores modificando el v.memory
y v.cpus
parámetros.
config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 2 v.name = "MongoDB-5" end
El nombre asignado al parámetro v.name
es lo que se mostrará en su GUI de Virtualbox.
Crear secuencia de comandos de shell de arranque
Como dije anteriormente, se usa un aprovisionador de shell para instalar y configurar mongoDB en el cuadro vagabundo.
Cree un archivo llamado mongo-bootstrap.sh
:
$ vi mongo-bootstrap.sh
Y agregue la siguiente pieza de código en él:
#!/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
Presione ESC
y escribe :wq
para guardar el archivo y cerrarlo.
Déjame darte una breve descripción de cada sección en el código anterior.
De forma predeterminada, hay una versión anterior de mongoDB que se envía con Ubuntu. Si desea la última versión de mongodDB, debe agregar el repositorio oficial en mongo-bootstrap.sh
expediente.
La siguiente sección de código se encargará de agregar el repositorio, actualizar el índice del paquete, instalar mongoDB y abrir mongod
demonio.
El siguiente bloque de código creará un usuario vagabundo con privilegios de administrador. El nombre de usuario será vagrant
y la contraseña también está establecida en vagrant
. Puede establecer un nombre de usuario y una contraseña diferentes si lo desea.
De forma predeterminada, no se aplica ninguna política de seguridad. Cualquier usuario puede invocar mongosh
shell y comience a usar la base de datos. Para hacer cumplir el control de acceso basado en roles, se debe agregar el siguiente parámetro a /etc/mongod.conf
archivo.
Este fragmento de código se encargará de agregar el parámetro y reiniciar el mongod
daemon para que los cambios sean efectivos.
Aviso: Antes de habilitar RBAC (Control de acceso basado en roles), se debe crear un usuario administrador, para que pueda otorgar acceso a otros usuarios en cualquier base de datos.
Iniciar la máquina mongoDB Vagrant
Una vez que se crean el archivo Vagrant y el script de arranque, puede iniciar la máquina virtual ejecutando el siguiente comando:
$ vagrant up
Ahora, espere hasta que la máquina se inicie y la parte de instalación y configuración de mongoDB esté a cargo del script de arranque. Esto tomará un par de minutos.
Para iniciar sesión en la máquina virtual, ejecute el siguiente comando:
$ vagrant ssh
MongoDB escucha en el puerto 27017
. Puedes usar el netstat
comando para verificar si el puerto está en estado de escucha.
$ sudo netstat -tlnup
Salida de muestra:
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
Ejecute el siguiente comando para verificar el estado de mongod
servicio:
$ systemctl status mongod
Salida de muestra:
● 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
Acceder a la consola mongoDB
La cáscara de mongo es un cliente cli para conectarse a mongoDB. Ahora se reemplaza con un nuevo cliente cli mongosh
de mongoDB V5.
Ejecute mongosh
en la terminal para comenzar a usar el shell. Dado que RBAC está habilitado, debe proporcionar las credenciales.
Puede conectarse a la base de datos MongoDB usando monosh
usando la siguiente cadena de conexión.
$ mongosh mongodb://<username>:<password>@localhost:<port>/<database>
Aquí estoy conectándome con un usuario vagabundo recién creado.
$ mongosh mongodb://vagrant:[email protected]:27017/admin
Alternativamente, puede iniciar el shell y ejecutar los siguientes comandos para conectarse:
$ monosh
$ use admin
$ db.auth("username","password")
$ db.auth("vagrant","vagrant")
Administrar mongoDB vagrant box desde la línea de comandos
Los siguientes comandos vagabundos lo ayudarán a administrar la máquina virtual mongoDB a través de 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
Para un uso más detallado de los comandos de Vagrant, consulte nuestro tutorial de Vagrant:
- Tutorial de Vagrant:Introducción a Vagrant en Linux
Conclusión
En esta guía paso a paso, hemos visto cómo configurar fácilmente mongoDB en Ubuntu 20.04 Vagrant box. Si está probando un proyecto mongoDB o aprendiendo mongoDB, puede activar rápidamente un cuadro de Vagrant e instalar mongodDB en el cuadro de Vagrant como se describe aquí.