51
Encontro Técnico STI - UFF

Vagrant sti

Embed Size (px)

Citation preview

Page 1: Vagrant sti

Encontro Técnico STI - UFF

Page 2: Vagrant sti
Page 3: Vagrant sti

#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

• …

Page 4: Vagrant sti
Page 5: Vagrant sti

Solução?

Page 6: Vagrant sti

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 :)

Page 7: Vagrant sti

O que eu ganho?

Page 8: Vagrant sti

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.

Page 9: Vagrant sti

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.

Page 10: Vagrant sti

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’.

Page 11: Vagrant sti

O que preciso para começar?

• Instale o VirtualBox

• Instale o Vagrant (compatível com OSX, Windows, Debian e CentOS).

• Crie o seu Vagrantfile

Page 12: Vagrant sti

Vagrantfile

Esse comando cria um Vagrantfile inicial

Page 13: Vagrant sti

Principais comandos

• vagrant init

• vagrant up

• vagrant halt

• vagrant destroy

• vagrant package

Page 14: Vagrant sti

Vagranfile - UFF

Page 15: Vagrant sti

Um projeto padrão Rails…

Page 16: Vagrant sti

Puppet Manifests default.pp

Page 17: Vagrant sti

Vantagem

• Ambiente provisionado rapidamente

• Ampla utilização de Puppet no mercado

• Muitos scripts disponíveis e documentação na internet

• Automação!

Page 18: Vagrant sti

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

Page 19: Vagrant sti
Page 20: Vagrant sti

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

Page 21: Vagrant sti
Page 22: Vagrant sti
Page 23: Vagrant sti

Nunca foi tão fácil rodar um projeto!

Page 24: Vagrant sti
Page 25: Vagrant sti

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 :)

Page 26: Vagrant sti

Como começar…

http://docs.docker.io/installation/#installation

Page 27: Vagrant sti

Rodando o Ubuntu

• docker pull ubuntu

• docker run -i -t ubuntu /bin/bash

Baixa o container

Abre o terminal dentro do container

Page 28: Vagrant sti

Hands On!

Page 29: Vagrant sti

Sim, é MUITO rápido!

Page 30: Vagrant sti

E como eu crio uma imagem?

Lembra do Vagrantfile?

Page 31: Vagrant sti

Dockerfile!

Page 32: Vagrant sti

Dockerfile MySQL

[https://github.com/tutumcloud/tutum-docker-mysql]

Page 33: Vagrant sti

Talk is cheap!

Page 34: Vagrant sti

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!

Page 35: Vagrant sti

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

Page 36: Vagrant sti

Sim! Commits!

Page 37: Vagrant sti
Page 38: Vagrant sti

Commits

Se tentarmos rodar a imagem novamente, não vemos o arquivo criado…

Page 39: Vagrant sti

Isso ocorre porque cada container é completamente

isolado do outro!

Page 40: Vagrant sti

Commits

Esse é o container que contém o arquivo que criamos

Aqui está a nova imagem salva

Page 41: Vagrant sti

Commits

Agora quando rodamos a imagem, temos o nosso arquivo lá dentro!

Page 42: Vagrant sti

Docker x Vagrant

[http://www.scriptrock.com/articles/docker-vs-vagrant/]

Page 43: Vagrant sti
Page 44: Vagrant sti

Docker & Vagrant

• Uma solução possível é rodar os containers dentro do Vagrant

• http://docs.vagrantup.com/v2/provisioning/docker.html

Page 45: Vagrant sti
Page 46: Vagrant sti

Quem está usando?

Page 47: Vagrant sti

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!

Page 48: Vagrant sti

Jenkins

+ + =

Page 49: Vagrant sti

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/

Page 50: Vagrant sti

Dúvidas?

Page 51: Vagrant sti

Obrigado!

Hugo Arraes Henley [email protected]