Taula de continguts

vagrant mysql

los ficheros necesarios se han servido desde un pequeño contenedor (por restricciones de licencia o firewall),

docker run -d -p 9090:80 -v $PWD:/http tiagoad/nginx-index

con docker

(problema sin resolver, la VM arranca bien el mysql la primera vez, pero no las posteriores)

Vagrantfile
IP = '192.168.1.20'
VERSION = '5.5'
NAME = "mysql-#{VERSION}"
 
Vagrant.configure("2") do |config|
  config.vm.box = "altrankas/mysql5"
  config.vm.hostname = NAME
  config.vm.define NAME
  config.vm.network "private_network", ip: "#{IP}"
  config.vm.network "forwarded_port", guest: 3306, host: 3306
  config.vm.synced_folder ".", "/vagrant"
 
  config.vm.provider :virtualbox do |v|
    v.gui = true
    v.linked_clone = true
    v.name = NAME
  end

  config.vm.provision "shell", path: "../../common/setup-mysql.sh", args: "#{VERSION}"
  config.vm.provision "shell", path: "../../common/setup-vagrant.sh"
 
  config.vm.provision "docker" do |d|
    d.run "mysql_#{VERSION}", image: "mysql:#{VERSION}",
      args: "-p 3306:3306 -v /data/#{VERSION}:/var/lib/mysql --env MYSQL_ROOT_PASSWORD=admin"
  end
end

5.5 standalone

el fichero tar.gz ya está descargado, pero está preparado para depender del nginx.

Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "peru/ubuntu-18.04-desktop-amd64"
  config.vm.box_version = "20190401.01"
  config.vm.provision "file", source: "../../common/addroot.sql", destination: "/tmp/addroot.sql"
  config.vm.provision "file", source: "./mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz", destination: "/tmp/mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz"
  config.vm.network "private_network", ip: "192.168.1.5"
  config.vm.network "forwarded_port", guest: 3306, host: 3306
 
  config.vm.provider :virtualbox do |v|
    v.name = "altrankas-mysql-5.5"
    v.linked_clone = true
    v.memory = 2048
    v.cpus = 2
  end

  config.vm.provision "shell", path: "install.sh"
 
#  config.vm.provision "shell", path: "../../common/addInsecureKey.sh"
 
end
install.sh
#!/bin/bash
 
# https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz 
MYSQL_FOLDER="mysql-5.5.62-linux-glibc2.12-x86_64"
MYSQL_TGZ="${MYSQL_FOLDER}.tar.gz"
MYSQL_URL_DOWNLOAD="https://dev.mysql.com/get/Downloads/MySQL-5.5/${MYSQL_TGZ}"
MYSQL_HOME="/usr/local/mysql"
 
DEBIAN_FRONTEND=noninteractive
 
sudo apt-get -y update
sudo apt-get install -y wget libaio1 > /dev/null 2>&1
sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/root-pass password admin'
sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/re-root-pass password admin'
 
#sudo wget -O /tmp/${MYSQL_TGZ} ${MYSQL_URL_DOWNLOAD}
sudo tar zxf /tmp/${MYSQL_TGZ} -C /tmp/
sudo mv /tmp/${MYSQL_FOLDER} ${MYSQL_HOME}
 
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
sudo chown -R mysql:mysql ${MYSQL_HOME}
cd ${MYSQL_HOME}
sudo ${MYSQL_HOME}/scripts/mysql_install_db --basedir=${MYSQL_HOME} --user=mysql
sudo chown -R root ${MYSQL_HOME}
sudo chown -R mysql ${MYSQL_HOME}/data
 
sudo cp ${MYSQL_HOME}/support-files/my-medium.cnf /etc/my.cnf
sudo cp ${MYSQL_HOME}/support-files/mysql.server /etc/init.d/mysql.server
sudo mkdir /var/run/mysql
sudo chown -R mysql /var/run/mysql
 
cd ${MYSQL_HOME}
sudo ${MYSQL_HOME}/bin/mysqld_safe --user=mysql --basedir=${MYSQL_HOME} &
 
sleep 10
${MYSQL_HOME}/bin/mysqladmin -u root password 'admin'
sudo ${MYSQL_HOME}/bin/mysql -u root --password=admin mysql < /tmp/addroot.sql
sudo update-rc.d mysql.server defaults
#sudo systemctl restart mysql.service
 
sudo locale-gen es_ES
echo "setxkbmap -layout 'es,es' -model pc105" >> /home/vagrant/.bashrc
sudo echo "PATH=\"${PATH}:${MYSQL_HOME}/bin\"" >> /etc/environment

5.6 standalone

el Vagrantfile se readapta, pequeños cambios (el name y el fichero tar):

  config.vm.provision "file", source: "./mysql-server_5.6.43-1ubuntu14.04_amd64.deb-bundle.tar", destination: "/tmp/mysql-server_5.6.43-1ubuntu14.04_amd64.deb-bundle.tar"
install.sh
#!/bin/bash
 
# https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-server_5.6.43-1ubuntu14.04_amd64.deb-bundle.tar
MYSQL_TGZ="mysql-server_5.6.43-1ubuntu14.04_amd64.deb-bundle.tar"
MYSQL_URL_DOWNLOAD="https://dev.mysql.com/get/Downloads/MySQL-5.6/${MYSQL_TGZ}"
 
DEBIAN_FRONTEND=noninteractive
 
sudo apt-get -y update
sudo apt-get install -y wget > /dev/null 2>&1
sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/root-pass password admin'
sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/re-root-pass password admin'
 
#sudo apt-get install -y mysql-server > /dev/null 2>&1
#sudo wget -O /tmp/${MYSQL_TGZ} ${MYSQL_URL_DOWNLOAD}
sudo mkdir /tmp/mysql
sudo tar xf /tmp/${MYSQL_TGZ} -C /tmp/mysql
sudo dpkg -i /tmp/mysql/*.deb
sudo apt-get install -fy
sudo rm -rf /tmp/mysql
sudo rm -f /tmp/${MYSQL_TGZ}
 
#sudo sed -i.bak "s|127.0.0.1|0.0.0.0|g" /etc/mysql/mysql.conf.d/mysqld.cnf
sudo mysql -u root --password=admin mysql < /tmp/addroot.sql
sudo systemctl restart mysql.service
sudo locale-gen es_ES
echo "setxkbmap -layout 'es,es' -model pc105" >> /home/vagrant/.bashrc

5.7 standalone

versión Vagrantfile más reducida

Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "peru/ubuntu-18.04-desktop-amd64"
  config.vm.box_version = "20190401.01"
  config.vm.provision "file", source: "../../common/addroot.sql", destination: "/tmp/addroot.sql"
 
  config.vm.provider :virtualbox do |v|
    v.name = "altrankas-mysql-5.7"
    v.linked_clone = true
    v.memory = 2048
    v.cpus = 2
  end

  config.vm.provision "shell", path: "install.sh"

  config.vm.provision "shell", path: "../../common/addInsecureKey.sh"
 
end
install.sh
#!/bin/bash
 
DEBIAN_FRONTEND=noninteractive
 
sudo apt-get -y update
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password admin'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password admin'
 
sudo apt-get install -y mysql-server > /dev/null 2>&1
 
sudo sed -i.bak "s|127.0.0.1|0.0.0.0|g" /etc/mysql/mysql.conf.d/mysqld.cnf
sudo mysql -u root --password=admin mysql < /tmp/addroot.sql
sudo systemctl restart mysql.service
sudo locale-gen es_ES
echo "setxkbmap -layout 'es,es' -model pc105" >> /home/vagrant/.bashrc

ficheros comunes

addroot.sql
CREATE USER 'root'@'%' IDENTIFIED BY 'admin';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
addInsecureKey.sh
#!/bin/bash
su - vagrant
echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
" >> .ssh/authorized_keys