Vagrant up and running !!

Image result for vagrant

Meus brothers, desculpe a ausência, mas vida de IT Guy e Pai é complicado, a criançada lá de casa ficou doente e acabei ficando doente também, mas vida que segue.

No posto de hoje vamos falar sobre o Vagrant da Hashicorp, uma ferramenta bem legal que eu comecei a usar para atender um projeto com o time de desenvolvimento da empresa e acabei adotando no meu dia a dia e nos meus estudos sobre Linux.

Você pode estar questionando sobre os posts de NSX-T eles retornarão em breve.

Mas aí você me pergunta: O que é o Vagrant ?

Vagrant é uma ferramenta para provisionamento de um ambiente de desenvolvimento usando principalmente máquinas virtuais.

Mas aí você pergunta novamente: Qual é a vantagem ?

O Vagrant diminui o tempo de setup de um ambiente de desenvolvimento e aumenta a semelhança de um ambiente de produção e desenvolvimento .

No meu caso eu uso o Vagrant para provisionar VMs linux no meu notebook ou no meu ambiente VMware para estudos com containers, microserviços e serviços linux sem precisar ficar perdendo tempo com instalação de sistemas operacionais e provisionamento de serviços. O Vagrant permite o provisionamento com shell script ou ferramentas de gerenciamento de configuração como Ansible, Puppet ou Chef.

O Vagrant permite o provisionamento de recursos através das seguintes plataformas:

  • Virtual box
  • VMware Workstation
  • KVM
  • AWS
  • Vsphere
  • Hyper-v
  • Docker

Aí você fala legal, mas quero ver funcionando!!!

Não vou abordar a implementação do Vagrant, devido o próprio fabricante fazer isso muito bem, então se quiser aprender sobre o Vagrant como as demais ferramentas da Hashicorp é só clicar no link abaixo e se divertir:

https://www.vagrantup.com/intro/getting-started/install.html

O cenário que irei demonstrar é o provisionamento de uma VM Linux Centos 7, com LAMP para suportar o WordPress. Neste teste estou usando meu notebook com Fedora Linux 30, Vagrant e Virtual Box, mas Windows e Mac são suportados e o mesmo arquivo (Vagrantfile) de provisionamento pode ser utilizando entre os sistemas operacionais.

Após a implementação do Vagrant começamos com a criação de um Vagrantfile, através do comando vagrant init

Este comando cria o arquivo Vagrantfile no diretório atual do usuário

o conteúdo do arquivo é este . No caso abaixo removi os comentário e só deixei as instruções inicais do arquivo sem customização.

Mas para o nosso teste irei utilizar um arquivo customizado

Vagrant.configure(“2”) do |config|
config.vm.provider “virtualbox” do |v|
v.linked_clone = true
#v.gui = true
end

config.vm.define “srv01” do |subconfig|
subconfig.vm.box = “centos/7”
subconfig.vm.synced_folder “.”, “/vagrant”, disabled: true
config.vm.synced_folder “/home/silvio/vagrant”, “/files”
subconfig.vm.hostname = “srv01”
subconfig.vm.network “private_network”, ip: “172.28.128.2”
subconfig.vm.provision “shell”, path: “base.sh”
subconfig.vm.provision “shell”, path: “lamp.sh”
end

end

O campo Vagrant.configure utilizo para configuração do virtual box, como utilizar linked clone, entre outras opções.

O campo config.vm.define é utilizado para a criação da vm e provisionamento dos serviços ofertados pela VM. O campo subconfig.vm.provision é utilizado para chamada de shell script para instalação de pacotes e serviços no Linux, lembrando que posso utilizar ferramentas de gerenciamento de configuração para provisionamento, mas iremos utilizar um shell script, bem básico para isso.

O campo subconfig.vm.box define o SO que será utilizado, mas o termo utilizado no Vagrant é box. Há um catálogo de boxes que pode ser utilizado pelos usuários e a ferramenta Packer da Hashicorp permite a criação de boxes customizadas, que podem ser enviadas para o catálogo.

Mas e aí qual é o resultado !!!

Vamos de vídeo que fica mais mais fácil demonstrar.

Provisionamento de um servidor com LAMP e WordPress

Fizemos a implementação de um servidor Centos com LAMP e WordPress provisioando com o Vagrant.

Dentro do Vagrant fiz a chamada dos scripts abaixo:

Base.sh

#!/bin/bash

#Install base softwares

yum install -y vim git2u unzip socat net-tools.x86_64 vim-common.x86_64 vim-enhanced.x86_64 make wget yum-utils epel-release

#Install repos

yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install epel-release yum-utils
yum-config-manager –disable remi-php53
yum-config-manager –disable remi-php54
yum-config-manager –disable remi-php55
yum-config-manager –enable remi-php73
yum update -y

#Setup timezone

timedatectl set-timezone America/Sao_Paulo

lamp.sh

!/bin/bash

cat > /etc/yum.repos.d/mariadb.repo << EOL

[mariadb]

name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOL

#Install LAMP

yum install httpd mariadb mariadb-server php php-common php-mysql php-gd php-xml php-mbstring php-mcrypt -y

#Mariadb

systemctl start mariadb
systemctl enable mariadb
sudo mysql -e “SET PASSWORD FOR root@localhost = PASSWORD(‘VMware1!’);FLUSH PRIVILEGES;”
printf “VMware1!\n n\n n\n n\n y\n y\n y\n” | sudo mysql_secure_installation

#create database

MYSQL_PASS=’VMware1!’
export MYSQL_PASS
mysql -uroot -pVMware1! -e “CREATE DATABASE db_wordpress;”;
mysql -uroot -pVMware1! -e “GRANT ALL PRIVILEGES on db_wordpress.* to ‘wordpressuser’@’localhost’ identified by ‘password’;”;
mysql -uroot -pVMware1! -e “FLUSH PRIVILEGES”;
mysql -uroot -pVMware1! -e “exit”;

#HTTPD PART1

systemctl start httpd
systemctl enable httpd

#WORDPRESS

cd /tmp && wget http://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
sudo cp -avr wordpress/* /var/www/html/
mkdir -p /var/www/html/wp-content/uploads
sudo chown -R apache:apache /var/www/html/
sudo chmod -R 755 /var/www/html/
cd /var/www/html/
sudo cp wp-config-sample.php wp-config.php

#Firewall

firewall-cmd –permanent –zone=public –add-service=http
firewall-cmd –permanent –zone=public –add-service=https
firewall-cmd –reload
setenforce 0

No final do provisionamento faço somente o configuração do banco de dados, usuário e senha para conexão do WordPress com o Mariadb.

Estarei usando o Vagrant no meu dia a dia e havendo novidades eu post aqui os setups que tenho feito.

Forte abraço !!