SlideShare a Scribd company logo
1 of 51
Download to read offline
Encontro Técnico
STI - UFF
#quemnunca?
• Entrou numa empresa e levou dias para ter a sua
máquina configurada
• Testou na máquina e quando colocou em
homologação/produção encontrou alguns bugs
por causa de dependência que você desconhecia
que eram necessárias?
• Sofreu para tentar instalar o Oracle no OSX e não
obteve sucesso
• …
Solução?
O que é o Vagrant?
• Software open-source para criação e configuração de
máquinas virtuais
• Compatível com VirtualBox 4.0.x, 4.1.x, 4.2.x e 4.3.x.
• Também funciona com VMWare e Hyper-V.
• Escrito em Ruby :)
O que eu ganho?
Se você é um desenvolvedor…
• Isolamento de dependências sem sacrificar
ferramentas que você já usa para trabalhar.
• Uma vez que o arquivo Vagrantfile existe no projeto,
basta rodar ‘vagrant up’ para ter todo o ambiente
instalado e configurado (banco de dados, ruby,
memcached…).
• Todos os membros da equipe estarão rodando o
projeto na mesma máquina! Não importa se usam
OSX, Linux ou Windows para programar.
Se você é DevOps…
• Ambiente para testar rapidamente seus shell scripts,
Chef cookbooks, Puppet modules, etc.
• Possibilidade de testar scripts em clouds remotas
como AWS e RackSpace.
Se você é designer…
• Agora você pode focar no que interessa pra você!
• Se preocupe apenas com design. Crie seus layouts no
photoshop, CSS, etc sem se preocupar como fazer o
projeto rodar. Tudo que você precisa aprender é
‘vagrant up’, ‘vagrant halt’ e ’vagrant destroy’.
O que preciso para
começar?
• Instale o VirtualBox
• Instale o Vagrant (compatível com OSX, Windows,
Debian e CentOS).
• Crie o seu Vagrantfile
Vagrantfile
Esse comando cria um Vagrantfile inicial
Principais comandos
• vagrant init
• vagrant up
• vagrant halt
• vagrant destroy
• vagrant package
Vagranfile - UFF
Um projeto padrão Rails…
Puppet Manifests
default.pp
Vantagem
• Ambiente provisionado rapidamente
• Ampla utilização de Puppet no mercado
• Muitos scripts disponíveis e documentação na internet
• Automação!
Desvantagem
• Usar o Puppet não é tão simples quanto parece
• Quando não se tem um DevOps, a manutenção se
torna mais complicada
Rodando o Discourse
• git clone https://github.com/discourse/discourse.git
• cd discourse
• vagrant up
• vagrant ssh
• bundle install
• rake db:create
• rake db:migrate
• rails server
Nunca foi tão fácil rodar um projeto!
O que é?
• Projeto open-source para criar containers leves e
auto-suficientes que podem conter qualquer tipo de
aplicação/serviço
• Possui integração com Jenkins, Travis, Chef, Puppet,
Vagrant e OpenStack
• Se é possível rodar em um Kernel Linux, pode rodar no
Docker !
• Escrito em Go :)
Como começar…
http://docs.docker.io/installation/#installation
Rodando o Ubuntu
• docker pull ubuntu
• docker run -i -t ubuntu /bin/bash
Baixa o container
Abre o terminal dentro do container
Hands On!
Sim, é MUITO rápido!
E como eu crio uma
imagem?
Lembra do Vagrantfile?
Dockerfile!
Dockerfile MySQL
[https://github.com/tutumcloud/tutum-docker-mysql]
Talk is cheap!
Observações
• Tempo de boot do container? < 1seg
• As migrações rodam dentro do container! Você não
precisa ter o MySQL instalado na sua máquina
• Possibilidade de criar vários containers, cada um com
um serviço
• Ganhamos isolamento e velocidade!
Observações
• Grande facilidade na criação dos containers
• Não precisamos usar Puppet ou Chef para
provisionamento da máquina
• Depois que o container for criado, é possível acessá-
lo via ssh
• Podemos salvar o estado de uma imagem com
facilidade
Sim! Commits!
Commits
Se tentarmos rodar a imagem novamente, não vemos o arquivo criado…
Isso ocorre porque cada
container é completamente
isolado do outro!
Commits
Esse é o container que contém o arquivo que criamos
Aqui está a nova imagem salva
Commits
Agora quando rodamos a imagem, temos o nosso arquivo lá dentro!
Docker x Vagrant
[http://www.scriptrock.com/articles/docker-vs-vagrant/]
Docker & Vagrant
• Uma solução possível é rodar os containers dentro do
Vagrant
• http://docs.vagrantup.com/v2/provisioning/docker.html
Quem está usando?
Próximos passos
• Definir o uso de Vagrant e Docker como padrão na STI
• Integração entre o Jenkins e Vagrant/Docker.
• Passar o conhecimento adiante!
Jenkins
+ + =
Links recomendados
• https://www.scriptrock.com/articles/docker-vs-
vagrant/
• http://docs.docker.io/use/basics/
• http://docs.vagrantup.com/v2/getting-started/
index.html
• http://blog.relateiq.com/a-docker-dev-environment-
in-24-hours-part-1-of-2/
Dúvidas?
Obrigado!
Hugo Arraes Henley
hugohenley@id.uff.br

More Related Content

What's hot

What's hot (20)

Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Vagrant
VagrantVagrant
Vagrant
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQ
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Dev Ops at Paguemenos
Dev Ops at PaguemenosDev Ops at Paguemenos
Dev Ops at Paguemenos
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
 
TDC 2015 Floripa - Criando ambientes de forma simples com Docker e Ansible
TDC 2015 Floripa - Criando ambientes de forma simples com Docker e AnsibleTDC 2015 Floripa - Criando ambientes de forma simples com Docker e Ansible
TDC 2015 Floripa - Criando ambientes de forma simples com Docker e Ansible
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com Hudson
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 
Tecnologias em 2021: no que ficar de olho? | WTT2021 - Mackenzie
Tecnologias em 2021: no que ficar de olho? | WTT2021 - MackenzieTecnologias em 2021: no que ficar de olho? | WTT2021 - Mackenzie
Tecnologias em 2021: no que ficar de olho? | WTT2021 - Mackenzie
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShift
 

Similar to Vagrant sti

Similar to Vagrant sti (20)

Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
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...
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
Apt_vagrant_chef_olavo_queiroz
Apt_vagrant_chef_olavo_queirozApt_vagrant_chef_olavo_queiroz
Apt_vagrant_chef_olavo_queiroz
 
Docker para quem tem preguica
Docker para quem tem preguicaDocker para quem tem preguica
Docker para quem tem preguica
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Vagrant: Na sua máquina também funciona!
Vagrant: Na sua máquina também funciona!Vagrant: Na sua máquina também funciona!
Vagrant: Na sua máquina também funciona!
 
Conheça o Docker
Conheça o DockerConheça o Docker
Conheça o Docker
 
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Desenvolvimento PHP com Vagrant - 7Masters PHP
Desenvolvimento PHP com Vagrant - 7Masters PHPDesenvolvimento PHP com Vagrant - 7Masters PHP
Desenvolvimento PHP com Vagrant - 7Masters PHP
 
Docker.io:
Docker.io: Docker.io:
Docker.io:
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com Docker
 
Docker
DockerDocker
Docker
 
DevOps Primeiros Passos
DevOps Primeiros PassosDevOps Primeiros Passos
DevOps Primeiros Passos
 
.Net Core + Docker
.Net Core +  Docker.Net Core +  Docker
.Net Core + Docker
 
Docker e outras ferramentas Devops
Docker e outras ferramentas DevopsDocker e outras ferramentas Devops
Docker e outras ferramentas Devops
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
 

Vagrant sti