Con este tutorial, aprenderás a instalar MySQL, crear usuarios y cargar ficheros de configuración de forma desatendida en una máquina virtual con Vagrant.
Si no sabes como funciona el aprovisionamiento de Vagrant, primero lee la siguiente entrada: Aprovisiona tu máquina virtual con Vagrant
Todo lo que explico en esta entrada, lo hago pensando en que ya has leído la anterior entrada nombrada y que tienes nociones básicas de Vagrant.
Si quieres ir directamente al ejemplo del fichero completo de aprovisionamiento pincha aquí.
Tabla de contenidos
Directorio compartido “/vagrant”
Vagrant, automáticamente tiene un directorio compartido para que podamos transferir archivos a la máquina virtual con facilidad.
En la máquina virtual, este directorio es /vagrant . Todo el contenido que tengamos en la misma carpeta que el Vagrantfile podremos encontrarlo dentro de la máquina virtual.
Vagrantfile
En el fichero Vagrantfile, tienes que añadir la siguiente línea para decir que vas a hacer el aprovisionamiento a través de un script.
config.vm.provision "shell", path: "scriptBDD.sh"
En este caso, el fichero que se va a ejecutar al crear la máquina se llama “scriptBDD.sh”
Ejemplo real del Vagrant file:
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/trusty64" # hosname config.vm.hostname = "server.estamosrodeados.com" # red solo-anfitrion config.vm.network "private_network", ip: "192.168.56.100" # hardware config.vm.provider "virtualbox" do |vb| vb.memory = "1024" vb.cpus = 1 end # provisioning config.vm.provision "shell", path: "scriptBDD.sh" end
Fichero de aprovisionamiento
En el fichero de aprovisionamiento, en este caso “scriptBDD.sh”, es donde vas a escribir paso por paso los comandos que quieres que se ejecuten al crear la máquina virtual.
Es importante, que todos los comandos no necesiten interacción humana ya que si no, va a petar.
En los siguientes apartados, vas a ver cada configuración por separado. Al final, hay un ejemplo de como debería quedar el fichero.
Instalación
Con los siguientes comandos, se instalará MySQL en la máquina virtual.
apt uptade -y echo 'mysql-server-5.6 mysql-server/root_password password ubuntu' | debconf-set-selections echo 'mysql-server-5.6 mysql-server/root_password_again password ubuntu' | debconf-set-selections apt install -y mysql-server
Como puedes observar, en todos los comandos en los que instalo algo añado el “-y”, esto sirve para que al instalar un paquete no te pregunte lo típico de Yes/No y lo instale directamente.
Al instalar MySQL, este, te pregunta la contraseña que quieres darle al administrador de la base de datos, esto es un problema ya que si lo dejamos tal cual, nos va a petar. Por esto, uso el paquete “debconf-set-selections”, para darle directamente la contraseña y así no necesitar la interacción al instalar el programa. El problema, es que se la das en texto plano y esto, es bastante inseguro, recomiendo cambiar la contraseña de administrador al iniciar por primera vez.
Usuarios
Con los siguientes comandos, podemos crear usuarios de forma desatendida.
mysql -u root -pubuntu -e 'create user hector@% identified by hector PASSWORD EXPIRE' mysql -u root -pubuntu -e 'GRANT ALL PRIVILEGES ON *.* TO hector@%' mysql -u root -pubuntu -e 'FLUSH PRIVILEGES'
Como en la instalación de MySQL, la contraseña se la damos en texto plano, por eso le obligamos a cambiarla al iniciar sesión con la directiva “PASSWORD EXPIRE”
Configuraciones
Con los siguientes comandos, podemos reemplazar los ficheros de configuración de MySQL por defecto a nuestros propios ficheros de configuración.
cp /vagrant/my.cnf /etc/mysql/my.cnf
También añadimos el comando para reiniciar el servicio:
service mysql restart
Es importante, que los ficheros que queramos transferir, en este caso “my.cnf”, estén en el mismo directorio donde tenemos el Vagrantfile de la máquina virtual.
Ejemplo del fichero completo
Aquí un ejemplo del fichero “scriptBDD.sh” completo.
# Instalación apt uptade -y echo 'mysql-server-5.6 mysql-server/root_password password ubuntu' | debconf-set-selections echo 'mysql-server-5.6 mysql-server/root_password_again password ubuntu' | debconf-set-selections apt install -y mysql-server # Creación de usuarios mysql -u root -pubuntu -e 'create user hector@% identified by hector' mysql -u root -pubuntu -e 'GRANT ALL PRIVILEGES ON *.* TO hector@%' mysql -u root -pubuntu -e 'FLUSH PRIVILEGES' # Copiar archivos de conf cp /vagrant/my.cnf /etc/mysql/my.cnf # Reinicio service mysql restart
Como he comentado, al ejecutar estos comandos automáticamente, al crear la máquina virtual se instalará MySQL, se creará un usuario llamado “hector” y se copiaran los ficheros que queramos, en este caso el fichero de configuración de MySQL.
Ejecución y resumen final
Para crear la máquina virtual por primera vez tienes que ejecutar:
vagrant up
Si quieres volver a ejecutar el script de instalación de MySQL tienes que ejecutar:
vagrant provision
En resumen, todo lo que necesitas es tu fichero Vagrantfile, el fichero donde están los comandos que se tienen que ejecutar al crearse la máquina y si es necesario los ficheros de configuración del servicio en si, situados en el mismo directorio que el Vagrantfile.
Imagen de portada sacada de www.vagrantup.com
- Añadir un segundo disco duro con Vagrant y Virtualbox - 04/10/2020
- Instalar MySQL de forma desatendida con Vagrant - 04/10/2020
- Aprovisiona tu máquina virtual con Vagrant - 04/10/2020