0
respostas

Ubuntu 18.04 sem apanhar tanto

Apanhei pra caramba nesse curso por conta da versão do Ubuntu que estava sendo usada pelo instrutor, então resolvi compartilhar aqui no fórum as soluções que tive de implementar para que tudo funcionasse no Ubuntu Bionic, mas não vou fazer tutorial! Só estou compartilhando meus confs para dar uma luz para quem chegou até aqui e não conseguiu fazer tudo rodar, ok?

Vamos lá:

Comecei por instalar o plugin certo do vagrant para a versão do Ubuntu que eu estou rodando

vagrant plugin update vagrant-vbguest

Depois, tive de fazer modificações bem grandes no Vagrantfile

PS: Desculpem pela sujeira! Estou sem tempo para refatorar...

OBS: Estou usando MacOS, então a declaração da interface de rede é necessária

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"

  config.vm.define "wordpress" do |w|
    w.vm.network "public_network",
      ip: "192.168.0.105",
      bridge: "en1: Wi-Fi"

    config.vm.provider "virtualbox" do |vb|
      vb.memory = 1024
      vb.cpus = 2
      vb.name = "ubuntu_ansible_wordpress"
    end


    w.vm.synced_folder "./configs", "/configs" #Enable configs folder share

  #Add pub key to autorized keys ssh
    w.vm.provision "shell", inline: "cat /configs/ansible_vm.pub >> .ssh/authorized_keys"
  # Run Ansible from the Vagrant VM
    w.vm.provision "ansible" do |ansible|
      ansible.inventory_path = "./configs/ansible/hosts"
      ansible.playbook = "./configs/ansible/playbook.yml"
    end

    #Do it only at first boot VM
    w.vm.provision "shell",
      path: "./configs/pecl_mcrypt.sh"
  end

#-****-#
  #Create a MySQL Server machine
  config.vm.define "mysql" do |mysql|
    #Configure public networks
    mysql.vm.network "public_network", ip: "192.168.0.106", bridge: "en1: Wi-Fi"

    #Configure ram, processor and VM hostname
    mysql.vm.provider "virtualbox" do |vb|
      #vb.memory = 1024
      #vb.cpus = 2
      vb.name = "ubuntu_ansible_mysql"
    end

    mysql.vm.synced_folder "./configs", "/configs" #Enable configs folder share
    mysql.vm.synced_folder ".", "/vagrant", disabled: false #Disable vagrant folder

    #Add pub key to autorized keys ssh
    mysql.vm.provision "shell", inline: "cat /Users/cleberlopes/Documents/Devops/ansible/configs/ansible_vm.pub >> .ssh/authorized_keys"
    # Run Ansible from the Vagrant VM
     mysql.vm.provision "ansible" do |ansible|
       ansible.inventory_path = "./configs/ansible/hosts"
       ansible.playbook = "./configs/ansible/playbook.yml"
    end

    #Do it only at first boot VM
    mysql.vm.provision "shell",
      path: "./configs/mysqluser.sh"

  end

end

Você viu que meu Vagrantfile chama dois shell scripts, certo? Aqui estão eles:

pecl_mcrypt.sh

#!/bin/bash
#Criado por: cl2b2r - 2022
###Metodo que verifica/instala pacote
echo "Verificando se o mcrypt está instalado"
echo
sleep 2
n=mcrypt
pacote=$(sudo pecl list | grep "$n" )
echo
sleep 2
if [ -n "$pacote" ] ;
then echo
     echo "Pacote $nome ja instalado"
else echo
     echo "Pacote $n Necessario-> Nao instalado"
     echo "Instalando Automaticamente Pacote mcrypt-1.0.1..."
     sudo pecl install mcrypt-1.0.1
fi
sleep 4
echo "extension=mcrypt.so" | sudo tee /etc/php/7.2/apache2/conf.d/mcrypt.ini && sudo service apache2 restart
clear
exit

E...

mysqluser.sh

#!/bin/bash
##Criado por: cl2b2r - 2022
#
db=$(sudo mysql -u root -e  "SHOW DATABASES;" | grep wordpress_db)
echo
sleep 2
echo "Verificando se a Base de Dados do Wordpress foi criada"
echo
sleep 2
if [ -n "$db" ];
then echo
     echo "A Base de Dados já existe"
else echo
     echo "Criando a Base de Dados..."
     sudo mysql -u root -e  "CREATE DATABASE wordpress_db /*\!40100 DEFAULT CHARACTER SET utf8 */;"
     sudo service mysql stop
     sudo service mysql start
     sudo mysql -u root -e  "SHOW DATABASES;"
     echo
     echo "Base de dados criada com sucesso!"
fi

OBS: Tive de criar ambos scripts porque pelo ansible aconteciam dois erros graves

  1. O pacote mcrypt saiu da base de pacotes de instalação do Ubuntu Bionic, então não era possível instalá-lo por apt.
  2. Toda vez que eu tentava criar a base de dados via ansible dava erro, então só consegui via shell script

--

Se vocês conseguiram resolver esses erros de outra forma, por favor, me contem! O resto dos configs estão como o demonstrado na aula, então não é necessário que eu coloque aqui, mas até chegar nesse resultado, fazendo funcionar, apanhei muito!

Espero que ajude a quem não está conseguindo e que abra uma discussão bacana com quem conseguiu de outra forma.