SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Evitandoafadiga
com
LaravelHomestead
By: @DaniloEsser
HelloWorld!
Eu sou Danilo Esser
✖ +14 anos de PHP
✖ Zend Certified PHP Developer
✖ Integrante da comunidade PHPDF
✖ Hardcore Gamer, Músico e fã de Memes- lol
daniloesser@gmail.com
57%das organizações estão
insatisfeitas com o tempo que se leva para
liberar novos recursos e mudanças em produção.
Apenas2%
das organizações conseguem realizar um ou mais
releases por dia em suas aplicações:
LAMP,WAMP,MAMP,Xampp...
➢Até quando você irá sofrer configurando
ambientes de desenvolvimento?
➢Quantas vezes você já usou a desculpa:
“mas funciona na minha máquina…”
Problemascomuns:
✖Ambientes desiguais (dev/prod)
✖Ambientes desiguais (entre os devs/Team)
✖Múltiplos servers, uma solução
✖Inúmeras configs de setup inicial
✖Difícil replicação...
✖ Baixar uma distro Linux
✖ Compilar Apache, PHP, MySQL, Etc...
✖ Configurar Libs como CuRL,
ImageMagick, APC, Oci...
✖ Configurar VirtualHosts do Apache..
✖ Copiar arquivos de Setup/Config via
Samba, FTP ou SCP...
✖ Importar databases...
✖ Fazer checkout de repositórios..
Eseaoinvésdevocê...
✖ Especificar em texto simples como
o hardware da máquina virtual deve
ser configurado e o que deve ser
instalado nela, como numa receita.
✖ Fazer checkout do projeto.
✖ Executar "vagrant up" e já começar
a trabalhar.
Vagrant!!!
Vagrant é rápido, fácil e ajuda você a
gerenciar vários ambientes de
desenvolvimento ao mesmo tempo de forma
eficiente e divertida!
Blz…Masesse talVagrant... oqueé?
Providers Boxes Provisioners
O Vagrant é um gerenciador de VMs (máquinas virtuais). Através dele
é possível definir o ambiente de desenvolvimento onde seu projeto
irá rodar. Com suporte para Mac OS, Linux e Windows, consegue
atender boa parte dos desenvolvedores. Ele utiliza providers, boxes e
se necessário, provisioners.
Ok…edoqueeuprecisobasicamente?
✖ Provider: ✖ Vagrant:
InstalandoOracleVirtualBox
InstalandoOracleVirtualBox
InstalandoOracleVirtualBox
InstalandoOracleVirtualBox
InstalandoVagrant
InstalandoVagrant
InstalandoVagrant
InstalandoVagrant
Testando...
Eagora?
http://atlas.hashicorp.com/boxes/search
Eagora?
Vagrant up
Cria (ou inicia) uma
maquina virtual.
Vagrant provision
Re-executa os scripts de
provisionamento na
maquina virtual.
Vagrant ssh
Acessa a maquina virtual
via SSH.
Vagrant halt
Interrompe a maquina
virtual em execução.
Vagrant destroy
Destrói a maquina
virtual.
Vagrant Box
Adiciona, lista, remove
ou atualiza os Boxes do
Vagrant.
Vagrant docker-run
Executa um container Docker.
P.S: Podemos utilizar qualquer um dos
comandos Docker.
VagrantvsDocker
VagrantvsDocker
Resumindo:
GrayWhite Black
SpoilerAlert:
O único problema do Vagrant é a sua curva de
aprendizagem DevOps. Uma coisa é você começar a usar
Vagrant, outra coisa (totalmente diferente) é você fazer
configuração e provisionamento do seu servidor
personalizado utilizando Ansible, Chef ou Puppet.
ProvisionandocomPuppet
puphpet/config.yaml
Memoria (1GB)
memory: '1024'
CPU’s
cpus: '1'
Network
private_network: 192.168.10.10
MySQL
mysql:
install: '1'
root_password: 123456
adminer: '1'
databases:
ptUkwSJZgC0x:
grant:
- ALL
name: app_dev
host: localhost
user: app_dev
password: app_dev
sql_file: ''
….
………..
….….….….….
tools/provision.sh
#Update Ubuntu
sudo apt-get update;
apt-get -f install
#Install Packages
##nginx
sudo apt-get install nginx --yes
##PHP5-FPM
sudo apt-get install php5-fpm php5-cli php5-common php5-
curl php5-xdebug php5-gd php5-imagick php5-mcrypt --yes
##MySQL
echo "mysql-server-5.5 mysql-server/root_password password
root" | debconf-set-selections
echo "mysql-server-5.5 mysql-server/root_password_again
password root" | debconf-set-selections
sudo apt-get -y install mysql-server-5.5
.
….
………..
….….….….…….
ProvisionandocomShellscript
ProvisionandocomChef
Vagrantfile
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = ["cookbooks"]
chef.add_recipe :apt
chef.add_recipe 'php'
chef.add_recipe 'mysql::server'
chef.add_recipe 'nginx'
chef.add_recipe 'git'
chef.json = {
:mysql => {
:server_root_password => "app_cheff",
:server_repl_password => "app_cheff",
:server_debian_password => "",
:service_name => "mysql",
:basedir => "/usr",
:data_dir => "/var/lib/mysql",
:root_group => "root",
:mysqladmin_bin => "/usr/bin/mysqladmin",
:mysql_bin => "/usr/bin/mysql",
:conf_dir => "/etc/mysql",
:confd_dir => "/etc/mysql/conf.d",
:socket =>
"/var/run/mysqld/mysqld.sock",
:pid_file =>
"/var/run/mysqld/mysqld.pid",
:grants_path => "/etc/mysql/grants.sql"
},
……
Cheffile
# encoding: utf-8
site 'https://supermarket.getchef.com/api/v1'
cookbook "apt"
cookbook "php", {}
cookbook "mysql", {}
cookbook "nginx", {}
cookbook "git", {}
Nãoerapra serfácil?
✖ Chef config...
✖ Puppet config…
✖ Shell Script...
✖ VagrantFile config…
✖ Etc.. etc… etc..
Homestead!!!Homestead é a resposta do Projeto Laravel a
todas essas dificuldades. Ele já vem pré-
configurado para suprir as necessidades do
Framework e de quebra ainda traz diversos
recursos populares e essenciais.
Eoqueganhamos comoHomestead?
● Ubuntu 16.04 – Fácil de usar e muito conhecido.
● Git
● PHP 7 – Ultima versão stable.
● Nginx – Rápido, performático e fácil de configurar.
● MariaDB – Vai além do MySQL, oferecendo nível empresarial de alta
disponibilidade, escalabilidade e segurança ao MySQL.
Avidaagoraéfácil!
Adicionar o
Box do
Homestead
ao Vagrant
Configurar
o arquivo
Homestead.yaml
Clonar o
Repositório
do
Homestead
Atualizar o
arquivo
etc/hosts
Vagrant up !!!
AdicionandooBoxdoHomesteadaoVagrant
Após instalar o Vagrant, basta adicionar
o box do Homestead com o seguinte
comando:
vagrant box add laravel/homestead
Avidaagoraéfacil!
Adicionar o
Box do
Homestead
ao Vagrant
Configurar
o arquivo
Homestead.yaml
Clonar o
Repositório
do
Homestead
Atualizar o
arquivo
etc/hosts
Vagrant up !!!
Clonando oRepositóriodoHomestead
O próximo passo é clonar o repositório oficial
do Homestead e criar um único arquivo de config:
➔ Instalação do repositório do Homestead:
◆ Global:
git clone git@github.com:laravel/homestead.git .
◆ Per project:
composer require laravel/homestead --dev
➔ Criação do arquivo Homestead.yaml:
◆ Global:
bash init.sh
◆ Per project:
php vendor/bin/homestead make
Avidaagoraéfacil!
Adicionar o
Box do
Homestead
ao Vagrant
Configurar
o arquivo
Homestead.yaml
Clonar o
Repositório
do
Homestead
Atualizar o
arquivo
etc/hosts
Vagrant up !!!
Configurando oarquivo Homestead.yaml
Para nossa alegria, este é realmente o
único arquivo que você precisa editar:
provider: virtualbox
name: meu-site
ip: "192.168.10.10"
memory: 2048
cpus: 1
authorize: C:UsersDanilo.sshid_rsa.pub
keys:
- C:UsersDanilo.sshid_rsa
folders:
- map: “D:projetosmeu_site”
to: “/home/vagrant/meu_site”
sites:
- map: homestead.app
to: “/home/vagrant/meu_site/public”
databases:
- bd_do_site
Redirecionamento deportas
Service Default Forward
SSH 22 2222
HTTP 80 8000
HTTPS 443 44300
MySQL 3306 33060
Postgres 5432 54320
ports:
- send: 27017
to: 27017
- send: 7777
to: 777
protocol: udp
Homestead.yaml
Avidaagoraéfácil!
Adicionar o
Box do
Homestead
ao Vagrant
Configurar
o arquivo
Homestead.yaml
Clonar o
Repositório
do
Homestead
Atualizar o
arquivo
etc/hosts
Vagrant up !!!
Atualizandooarquivo etc/hosts
Agora, usando o hostname que escolhemos
para o nosso site, basta atualizar o arquivo
host local:
#127.0.0.1 localhost
#::1 localhost
127.0.0.1 homestead.app
127.0.0.1 meu-projeto.local
Isto dirá ao computador que o hostname
homestead.app está localizado no endereço IP
127.0.0.1 (Que hospeda a nossa VM).
Avidaagoraéfacil!
Adicionar o
Box do
Homestead
ao Vagrant
Configurar
o arquivo
Homestead.yaml
Clonar o
Repositório
do
Homestead
Atualizar o
arquivo
etc/hosts
Vagrant up !!!
That’sit!
SSHTest:
Acessando Bancodedados
Quando o Homestead é provisionado, o
MySQL e o Postgres já estão instalados com
um usuário root. Isto facilita muito o
acesso e a gerência destas bases através
de um client (Navicat ou similar):
MySQL:
Host: 127.0.0.1
User: homestead
Password: secret
Port: 33060
Postgres:
Host: 127.0.0.1
User: homestead
Password: secret
Port: 54320
Criandovariáveisdeambiente
Com o Homestead fica realmente muito
fácil de criar variáveis de ambiente no
servidor. Você pode usar isso para várias
coisas como senhas, chaves de API e
configuração global.
variables:
- key: APP_ENV
value: local
- key: API_KEY
value: 123abc
- key: API_SECRET
value: minh@-s3cr3t
$app_env = getenv('APP_ENV');
// returns "local"
$api_key = getenv('API_KEY');
// returns "123abc"
$api_secret = getenv('API_SECRET');
// returns "minh@-s3cr3t"
Thanks!
@daniloesser
DaniloEsser@gmail.com
Perguntas?
CreditoseReferências
✖ Manuais & Sites oficiais:
○ Vagrant: http://www.vagrantup.com
○ Homestead: https://laravel.com/docs/5.3/homestead
✖ Infos adicionais & imagens:
○ https://www.sitepoint.com/6-reasons-move-laravel-homestead/
○ https://24ways.org/2014/what-is-vagrant-and-why-should-i-care/
○ https://scotch.io/tutorials/get-vagrant-up-and-running-in-no-time
○ http://www.ca.com/content/dam/ca/us/files/ebook/onward-and-upward-
three-ways-application-release-automation-can-give-lift.pdf

Weitere ähnliche Inhalte

Was ist angesagt?

Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_framework
Milton Rodrigues
 
Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com Nginx
Thiago Paes
 

Was ist angesagt? (20)

Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Web Offline
Web OfflineWeb Offline
Web Offline
 
Docker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHONDocker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHON
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_framework
 
Ionic workshop
Ionic workshopIonic workshop
Ionic workshop
 
Php além do LAMP
Php além do LAMPPhp além do LAMP
Php além do LAMP
 
Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com Nginx
 
Laravel 5
Laravel 5Laravel 5
Laravel 5
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Construindo uma API, Client e Documentação usando Silex, Angular e Swagger
Construindo uma API, Client e Documentação usando Silex, Angular e SwaggerConstruindo uma API, Client e Documentação usando Silex, Angular e Swagger
Construindo uma API, Client e Documentação usando Silex, Angular e Swagger
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On Rails
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Mini curso: Ionic Framework
Mini curso: Ionic FrameworkMini curso: Ionic Framework
Mini curso: Ionic Framework
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
 

Andere mochten auch

Aula 03-introducao-a-redes-e-protocolos-arquitetura-e-topologia-de-rede
Aula 03-introducao-a-redes-e-protocolos-arquitetura-e-topologia-de-redeAula 03-introducao-a-redes-e-protocolos-arquitetura-e-topologia-de-rede
Aula 03-introducao-a-redes-e-protocolos-arquitetura-e-topologia-de-rede
Edgar Brito
 
T.A.R Aula 2 (1ª Unidade)
T.A.R Aula 2 (1ª Unidade)T.A.R Aula 2 (1ª Unidade)
T.A.R Aula 2 (1ª Unidade)
Cleiton Cunha
 
Como implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPComo implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHP
Pablo Aguiar
 
Rede e hierarquia urbana
Rede e hierarquia urbanaRede e hierarquia urbana
Rede e hierarquia urbana
karolpoa
 
Trabalhadores higiene pessoal
Trabalhadores higiene pessoalTrabalhadores higiene pessoal
Trabalhadores higiene pessoal
Melina Montenegro
 
Higiene Pessoal
Higiene PessoalHigiene Pessoal
Higiene Pessoal
llillianna
 
Higiene e saúde
Higiene e saúdeHigiene e saúde
Higiene e saúde
Msaude
 

Andere mochten auch (20)

Aula 03-introducao-a-redes-e-protocolos-arquitetura-e-topologia-de-rede
Aula 03-introducao-a-redes-e-protocolos-arquitetura-e-topologia-de-redeAula 03-introducao-a-redes-e-protocolos-arquitetura-e-topologia-de-rede
Aula 03-introducao-a-redes-e-protocolos-arquitetura-e-topologia-de-rede
 
T.A.R Aula 2 (1ª Unidade)
T.A.R Aula 2 (1ª Unidade)T.A.R Aula 2 (1ª Unidade)
T.A.R Aula 2 (1ª Unidade)
 
Aula - Protocolo Tcp Ip
Aula - Protocolo Tcp IpAula - Protocolo Tcp Ip
Aula - Protocolo Tcp Ip
 
Guia De Instalacao Maquina Virtual Utilizando VirtualBox
Guia De Instalacao Maquina Virtual Utilizando VirtualBoxGuia De Instalacao Maquina Virtual Utilizando VirtualBox
Guia De Instalacao Maquina Virtual Utilizando VirtualBox
 
Jquery fundamentals-book-pt-br
Jquery fundamentals-book-pt-brJquery fundamentals-book-pt-br
Jquery fundamentals-book-pt-br
 
Protocolo TCP/IP
Protocolo TCP/IPProtocolo TCP/IP
Protocolo TCP/IP
 
Como implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPComo implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHP
 
Sistemas de arquivos
Sistemas de arquivosSistemas de arquivos
Sistemas de arquivos
 
Protocolos TCP IP UDP
Protocolos TCP IP UDPProtocolos TCP IP UDP
Protocolos TCP IP UDP
 
Rede e hierarquia urbana
Rede e hierarquia urbanaRede e hierarquia urbana
Rede e hierarquia urbana
 
Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.
Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.
Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.
 
Trabalhadores higiene pessoal
Trabalhadores higiene pessoalTrabalhadores higiene pessoal
Trabalhadores higiene pessoal
 
Topologias de rede
Topologias de redeTopologias de rede
Topologias de rede
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)
 
Higiene Pessoal
Higiene PessoalHigiene Pessoal
Higiene Pessoal
 
Acidente no Trabalho
Acidente no TrabalhoAcidente no Trabalho
Acidente no Trabalho
 
Higiene e saúde
Higiene e saúdeHigiene e saúde
Higiene e saúde
 
Higiene
HigieneHigiene
Higiene
 

Ähnlich wie Evitando a fadiga com Laravel Homestead

Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
PrinceGuru MS
 

Ähnlich wie Evitando a fadiga com Laravel Homestead (18)

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory
 
MigraçãO
MigraçãOMigraçãO
MigraçãO
 
PHP com Docker
PHP com DockerPHP com Docker
PHP com Docker
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
 
Usando vitual box parte 3
Usando vitual box   parte 3Usando vitual box   parte 3
Usando vitual box parte 3
 
Palestra xen-flisol2011
Palestra xen-flisol2011Palestra xen-flisol2011
Palestra xen-flisol2011
 
Vagrant uma ferramenta realmente útil e versátil
Vagrant   uma ferramenta realmente útil e versátilVagrant   uma ferramenta realmente útil e versátil
Vagrant uma ferramenta realmente útil e versátil
 
Instalando Drupal, Começando do Começo
Instalando Drupal, Começando do ComeçoInstalando Drupal, Começando do Começo
Instalando Drupal, Começando do Começo
 
Como instalar o WordPress no seu computador
Como instalar o WordPress no seu computadorComo instalar o WordPress no seu computador
Como instalar o WordPress no seu computador
 
Vagrant + Puppet
Vagrant + PuppetVagrant + Puppet
Vagrant + Puppet
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Instalando e configurando o WordPress localmente
Instalando e configurando o WordPress localmenteInstalando e configurando o WordPress localmente
Instalando e configurando o WordPress localmente
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalação
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Seja burro e preguiçoso! v2
Seja burro e preguiçoso! v2Seja burro e preguiçoso! v2
Seja burro e preguiçoso! v2
 

Evitando a fadiga com Laravel Homestead

  • 2. HelloWorld! Eu sou Danilo Esser ✖ +14 anos de PHP ✖ Zend Certified PHP Developer ✖ Integrante da comunidade PHPDF ✖ Hardcore Gamer, Músico e fã de Memes- lol daniloesser@gmail.com
  • 3. 57%das organizações estão insatisfeitas com o tempo que se leva para liberar novos recursos e mudanças em produção.
  • 4. Apenas2% das organizações conseguem realizar um ou mais releases por dia em suas aplicações:
  • 5. LAMP,WAMP,MAMP,Xampp... ➢Até quando você irá sofrer configurando ambientes de desenvolvimento? ➢Quantas vezes você já usou a desculpa: “mas funciona na minha máquina…”
  • 6. Problemascomuns: ✖Ambientes desiguais (dev/prod) ✖Ambientes desiguais (entre os devs/Team) ✖Múltiplos servers, uma solução ✖Inúmeras configs de setup inicial ✖Difícil replicação...
  • 7. ✖ Baixar uma distro Linux ✖ Compilar Apache, PHP, MySQL, Etc... ✖ Configurar Libs como CuRL, ImageMagick, APC, Oci... ✖ Configurar VirtualHosts do Apache.. ✖ Copiar arquivos de Setup/Config via Samba, FTP ou SCP... ✖ Importar databases... ✖ Fazer checkout de repositórios.. Eseaoinvésdevocê... ✖ Especificar em texto simples como o hardware da máquina virtual deve ser configurado e o que deve ser instalado nela, como numa receita. ✖ Fazer checkout do projeto. ✖ Executar "vagrant up" e já começar a trabalhar.
  • 8. Vagrant!!! Vagrant é rápido, fácil e ajuda você a gerenciar vários ambientes de desenvolvimento ao mesmo tempo de forma eficiente e divertida!
  • 9. Blz…Masesse talVagrant... oqueé? Providers Boxes Provisioners O Vagrant é um gerenciador de VMs (máquinas virtuais). Através dele é possível definir o ambiente de desenvolvimento onde seu projeto irá rodar. Com suporte para Mac OS, Linux e Windows, consegue atender boa parte dos desenvolvedores. Ele utiliza providers, boxes e se necessário, provisioners.
  • 21. Eagora? Vagrant up Cria (ou inicia) uma maquina virtual. Vagrant provision Re-executa os scripts de provisionamento na maquina virtual. Vagrant ssh Acessa a maquina virtual via SSH. Vagrant halt Interrompe a maquina virtual em execução. Vagrant destroy Destrói a maquina virtual. Vagrant Box Adiciona, lista, remove ou atualiza os Boxes do Vagrant. Vagrant docker-run Executa um container Docker. P.S: Podemos utilizar qualquer um dos comandos Docker.
  • 25. SpoilerAlert: O único problema do Vagrant é a sua curva de aprendizagem DevOps. Uma coisa é você começar a usar Vagrant, outra coisa (totalmente diferente) é você fazer configuração e provisionamento do seu servidor personalizado utilizando Ansible, Chef ou Puppet.
  • 26. ProvisionandocomPuppet puphpet/config.yaml Memoria (1GB) memory: '1024' CPU’s cpus: '1' Network private_network: 192.168.10.10 MySQL mysql: install: '1' root_password: 123456 adminer: '1' databases: ptUkwSJZgC0x: grant: - ALL name: app_dev host: localhost user: app_dev password: app_dev sql_file: '' …. ……….. ….….….….…. tools/provision.sh #Update Ubuntu sudo apt-get update; apt-get -f install #Install Packages ##nginx sudo apt-get install nginx --yes ##PHP5-FPM sudo apt-get install php5-fpm php5-cli php5-common php5- curl php5-xdebug php5-gd php5-imagick php5-mcrypt --yes ##MySQL echo "mysql-server-5.5 mysql-server/root_password password root" | debconf-set-selections echo "mysql-server-5.5 mysql-server/root_password_again password root" | debconf-set-selections sudo apt-get -y install mysql-server-5.5 . …. ……….. ….….….….……. ProvisionandocomShellscript
  • 27. ProvisionandocomChef Vagrantfile config.vm.provision :chef_solo do |chef| chef.cookbooks_path = ["cookbooks"] chef.add_recipe :apt chef.add_recipe 'php' chef.add_recipe 'mysql::server' chef.add_recipe 'nginx' chef.add_recipe 'git' chef.json = { :mysql => { :server_root_password => "app_cheff", :server_repl_password => "app_cheff", :server_debian_password => "", :service_name => "mysql", :basedir => "/usr", :data_dir => "/var/lib/mysql", :root_group => "root", :mysqladmin_bin => "/usr/bin/mysqladmin", :mysql_bin => "/usr/bin/mysql", :conf_dir => "/etc/mysql", :confd_dir => "/etc/mysql/conf.d", :socket => "/var/run/mysqld/mysqld.sock", :pid_file => "/var/run/mysqld/mysqld.pid", :grants_path => "/etc/mysql/grants.sql" }, …… Cheffile # encoding: utf-8 site 'https://supermarket.getchef.com/api/v1' cookbook "apt" cookbook "php", {} cookbook "mysql", {} cookbook "nginx", {} cookbook "git", {}
  • 28. Nãoerapra serfácil? ✖ Chef config... ✖ Puppet config… ✖ Shell Script... ✖ VagrantFile config… ✖ Etc.. etc… etc..
  • 29. Homestead!!!Homestead é a resposta do Projeto Laravel a todas essas dificuldades. Ele já vem pré- configurado para suprir as necessidades do Framework e de quebra ainda traz diversos recursos populares e essenciais.
  • 30. Eoqueganhamos comoHomestead? ● Ubuntu 16.04 – Fácil de usar e muito conhecido. ● Git ● PHP 7 – Ultima versão stable. ● Nginx – Rápido, performático e fácil de configurar. ● MariaDB – Vai além do MySQL, oferecendo nível empresarial de alta disponibilidade, escalabilidade e segurança ao MySQL.
  • 31. Avidaagoraéfácil! Adicionar o Box do Homestead ao Vagrant Configurar o arquivo Homestead.yaml Clonar o Repositório do Homestead Atualizar o arquivo etc/hosts Vagrant up !!!
  • 32. AdicionandooBoxdoHomesteadaoVagrant Após instalar o Vagrant, basta adicionar o box do Homestead com o seguinte comando: vagrant box add laravel/homestead
  • 33. Avidaagoraéfacil! Adicionar o Box do Homestead ao Vagrant Configurar o arquivo Homestead.yaml Clonar o Repositório do Homestead Atualizar o arquivo etc/hosts Vagrant up !!!
  • 34. Clonando oRepositóriodoHomestead O próximo passo é clonar o repositório oficial do Homestead e criar um único arquivo de config: ➔ Instalação do repositório do Homestead: ◆ Global: git clone git@github.com:laravel/homestead.git . ◆ Per project: composer require laravel/homestead --dev ➔ Criação do arquivo Homestead.yaml: ◆ Global: bash init.sh ◆ Per project: php vendor/bin/homestead make
  • 35. Avidaagoraéfacil! Adicionar o Box do Homestead ao Vagrant Configurar o arquivo Homestead.yaml Clonar o Repositório do Homestead Atualizar o arquivo etc/hosts Vagrant up !!!
  • 36. Configurando oarquivo Homestead.yaml Para nossa alegria, este é realmente o único arquivo que você precisa editar: provider: virtualbox name: meu-site ip: "192.168.10.10" memory: 2048 cpus: 1 authorize: C:UsersDanilo.sshid_rsa.pub keys: - C:UsersDanilo.sshid_rsa folders: - map: “D:projetosmeu_site” to: “/home/vagrant/meu_site” sites: - map: homestead.app to: “/home/vagrant/meu_site/public” databases: - bd_do_site
  • 37. Redirecionamento deportas Service Default Forward SSH 22 2222 HTTP 80 8000 HTTPS 443 44300 MySQL 3306 33060 Postgres 5432 54320 ports: - send: 27017 to: 27017 - send: 7777 to: 777 protocol: udp Homestead.yaml
  • 38. Avidaagoraéfácil! Adicionar o Box do Homestead ao Vagrant Configurar o arquivo Homestead.yaml Clonar o Repositório do Homestead Atualizar o arquivo etc/hosts Vagrant up !!!
  • 39. Atualizandooarquivo etc/hosts Agora, usando o hostname que escolhemos para o nosso site, basta atualizar o arquivo host local: #127.0.0.1 localhost #::1 localhost 127.0.0.1 homestead.app 127.0.0.1 meu-projeto.local Isto dirá ao computador que o hostname homestead.app está localizado no endereço IP 127.0.0.1 (Que hospeda a nossa VM).
  • 40. Avidaagoraéfacil! Adicionar o Box do Homestead ao Vagrant Configurar o arquivo Homestead.yaml Clonar o Repositório do Homestead Atualizar o arquivo etc/hosts Vagrant up !!!
  • 43. Acessando Bancodedados Quando o Homestead é provisionado, o MySQL e o Postgres já estão instalados com um usuário root. Isto facilita muito o acesso e a gerência destas bases através de um client (Navicat ou similar): MySQL: Host: 127.0.0.1 User: homestead Password: secret Port: 33060 Postgres: Host: 127.0.0.1 User: homestead Password: secret Port: 54320
  • 44. Criandovariáveisdeambiente Com o Homestead fica realmente muito fácil de criar variáveis de ambiente no servidor. Você pode usar isso para várias coisas como senhas, chaves de API e configuração global. variables: - key: APP_ENV value: local - key: API_KEY value: 123abc - key: API_SECRET value: minh@-s3cr3t $app_env = getenv('APP_ENV'); // returns "local" $api_key = getenv('API_KEY'); // returns "123abc" $api_secret = getenv('API_SECRET'); // returns "minh@-s3cr3t"
  • 45.
  • 47. CreditoseReferências ✖ Manuais & Sites oficiais: ○ Vagrant: http://www.vagrantup.com ○ Homestead: https://laravel.com/docs/5.3/homestead ✖ Infos adicionais & imagens: ○ https://www.sitepoint.com/6-reasons-move-laravel-homestead/ ○ https://24ways.org/2014/what-is-vagrant-and-why-should-i-care/ ○ https://scotch.io/tutorials/get-vagrant-up-and-running-in-no-time ○ http://www.ca.com/content/dam/ca/us/files/ebook/onward-and-upward- three-ways-application-release-automation-can-give-lift.pdf

Hinweis der Redaktion

  1. Empresas Tipos de projeto Passado sombrio: compilações manuais, tunning para maquinas fracas, pouca banda.
  2. Qto tempo se leva para liberar um novo recurso em produção? (partindo do commit do dev). E se for um bug zero-day explorado por hackers q requer urgencia maxima? Tempo de resposta da equipe aos erros? Porquê devOps? Para manter o ritmo das demandas de novos recursos e atualizações, a transformação digital devem ser orientada pela entrega contínua e deve buscar entregar software de alta qualidade a qualquer momento. Romper o lag entre deploys para se manter competitivo no mercado. Entrega contínua é uma jornada que leva equipes que possuem processos manuais e roteirizados até processos automatizados, padronizados, ágeis, eficientes e de qualidade para toda a empresa, e ao mesmo tempo melhoram o lançamentos de novas aplicações. Ao longo desta jornada as equipes se tornam mais produtivas, focando no fornecimento de novos recursos e inovações enquanto combatem incêndios e ainda dão manutenção. É também uma jornada de escalabilidade, onde muitas empresas começam pequenas, automatizando lançamentos para um único projeto ou equipe e, em seguida, escalam suas práticas de entrega contínua para múltiplas aplicações e equipes em toda a empresa.
  3. DevOps fornece um conjunto de práticas e mudanças culturais - apoiados por ferramentas complementares - que automatiza o pipeline de entrega de software, permitindo que as organizações para ganhar, servir e reter consumidores melhor e mais rápido do que nunca. Como? Unindo equipes Guiando o desenvolvimento por Builds Automatizando testes e validações Automatização implantações Automatizar infra-estrutura - Como código
  4. Prejudica o pipeline de releases corretivas e evolutivas.
  5. freelancers externos contratados para trabalhar em nossos projetos… Colegas reclamando sobre como reinstalar um ambiente de desenvolvimento por causa de uma atualização do sistema operacional ou de uma biblioteca. Ego.. (nginx, apache, zendserver, php built-in server..)
  6. Imagine que você está desenvolvendo uma Aplicação com uma equipe de 15 pessoas. E que esta Aplicação usa Laravel como Framework backend, Redis, Memcached, Imagemagick, Curl, MySQL, PostgreSQL, e até mesmo MongoDB. Além de tudo isso, como requisito básico, as Libs do Laravel necessitam obrigatoriamente do PHP versão 5.3.7 ou superior e a Lib MCrypt do PHP instalada. Logicamente, o ideal é ter todas as 15 pessoas da equipe trabalhando neste App com ambientes de desenvolvimento idênticos. Afinal, nem todos os desenvolvedores da equipe possuem experiência de Sysops ou são Admins do sistema. E Configurar estes ambientes de desenvolvimento de forma idêntica pode ser uma tarefa enorme, pois é comum que algumas pessoas usem Mac, enquanto outros usam Linux e outras usam Windows... Digamos que na metade do projeto, seja necessário a instalação de uma nova Lib para geração de arquivos PDF. E que você precise do pacote "htmldoc" instalado no servidor para gerar estes arquivos. Normalmente, todos da equipe teriam que re-configurar seus ambientes, adicionando manualmente este pacote, via comando apt-get ou similar. Com Vagrant, é necessário apenas um commit no arquivo de configuração e todo mundo executa apenas um "reload" no seu Vagrant. Pronto! Todos do time agora podem gerar arquivos PDF com a lib htmldoc em seus projetos locais. Não importa se eles estão no Windows, Linux ou Mac, ambiente de desenvolvimento de todos permanece idêntico. O Vagrant administra tudo isso para você para que todos do time possam se concentrar em codificação em vez de ficarem mantendo ambientes de desenvolvimento.
  7. Providers (Prestadores de serviço), tais como VirtualBox, VMware, Amazon AWS, e do Digital Ocean, são serviços onde o seu ambiente virtual é criados e hospedado. Eles podem ser utilizados localmente (VirtualBox ou VMWare), ou em nuvem, (Amazon e Digital Ocean). Provisioners (provisionadores) são ferramentas que permitem que você configure rapidamente o seu servidor para suas necessidades específicas. Sua excelência se dá justamente pelo fato de podermos automatizar inúmeros processos de configuração antes mesmo do servidor ser criado. Você pode configurar praticamente tudo que será instalado no servidor. Alguns exemplos são PHP, módulos, Apache, Git, Vim, bancos de dados, logins, Xdebug, etc. Os dois provisioners mais comumente usados com Vagrant são Puppet e Chef. Os provisioners são realmente úteis quando precisamos construir ambientes de testes ou de produção exatamente com as mesmas configurações. Ele garante que estes ambientes sejam perfeitamente sincronizados.
  8. Nem todos nós temos o luxo de ter uma equipe de devOps para nos auxiliar ou ser um DevOp. E pra piorar, frameworks como o Laravel exigem requisitos bem rigorosos. Mas isto não é uma coisa ruim. Significa apenas que o Laravel pode fazer muita coisa e usa toneladas de coisas modernas bem legais. Homestead é a resposta do projeto Laravel a tudo isso. Homestead é uma box "pronta" do Vagrant que tem todas as características necessárias para você usar o Laravel e diversos outros frameworks, E tb alguns recursos interessantes adicionais. Trata-se de Vagrant Box personalizada. Ela é um pouco diferente do Vagrant puro. Nela não há provisionamento (usando Chef ou Puppet). Você basicamente usa uma imagem de servidor pré-configurada com Vagrant. Ele não só traz simplicidade para equipes pequenas, como também comporta projetos pequenos e médios sob essa configuração de fábrica. Ao utilizá-lo, nós eliminamos o transtorno da fase de provisionamento e garantimos uma inicialização rápida sem a necessidade de configurar o servidor. Não há setup complexo. Ele permite que você se concentre diretamente no código.
  9. Taylor Otwell, the father of Laravel, approves.
  10. Basicamente, isso é o que você precisa saber para começar a usar o Homestead. Ele permite que você se concentre no código e não no servidor.. e ao mesmo tempo, lhe traz um ambiente familiar e unificado entre o time. E é óbvio que você pode utiliza-lo para todos os tipos de projetos PHP como o WordPress, Zend e etc...