Instalar MySQL de forma desatendida con Vagrant

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í.

 

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

Hèctor

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *