vagrant & docker: carregue seus ambientes no bolso
DESCRIPTION
Uma apresentação sobre Vagrant, Docker, e como estas ferramentas podem ser usadas para a criação de ambientes de fácil reprodução.TRANSCRIPT
VAGRANT &DOCKER
Ou carregue seus ambientes no bolso com Vagrant e [email protected]
Primeiro, o bode na sala:
DOKKU
Servidor dokkuScripts dokkuDeployment dokkuSugestões dokku?
voltaremos aokku ao dokku mais tarde
Ambientes:a) reprodutíveis
b) portáveis
like so (demo)
olhando por baixo dos panos...
ANATOMIA DE UM ARQUIVO VAGRANT(SIM, ISSO É RUBY :)):
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # Configurando a imagem (Vagrant) de base para a VM config.vm.box = "cbumgard/nodejs"
# Configurando o redirecionamento de portas config.vm.network "forwarded_port", guest: 1948, host: 1948
# Preparando a VM, usando shell config.vm.provision "shell", inline: "cd /vagrant;npm install", privileged: "false"
# Configuração (desativada) de um IP fixo para acesso do host à máquina # config.vm.network "private_network", ip: "192.168.33.10"
# Configuração (desativada) de uma pasta compartilhada entre o host e a VM # config.vm.synced_folder "../data", "/vagrant_data"end
sim, o fluxo se resume a:$ git clone my-repo$ vagrant up
Ok, mas e se suas aplicações fossem portáteis?
PROBLEMÃO DE LOGÍSTICA ATÉ 1950:Como transportar e cobrar por cargas tão diferentes entre
si?
A SOLUÇÃO:
PROBLEMÃO DE DEVOPS ATÉ 2013:Como deployar e promover aplicações tão diferentes entre
si?
A SOLUÇÃO:
UM EXEMPLO COM MONGODB$ docker run --name exemplo-TDC -d mongo$ docker run -it --link exemplo-TDC:mongo \ --rm mongo sh -c 'exec mongo \ "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"'$ show dbs
CONCEITOS:Dockerfile: descreve uma imagemImagem: base (binários) para um containerContainer: unidade de execução
POR QUE UM DEV GOSTA DISSO?Portabilidade + Reprodutibilidade
Ei, não dependo de burocratas todo o tempo!
POR QUE UM DEVOPS GOSTA DISSO?Automação + Reprodutibilidade
Ei, é menos trabalho chato!
POR QUE UM ADMIN GOSTA DISSO?Ei, é menos trabalho!
POR QUE UM INFRA MANAGER GOSTADISSO?
Ei, é uma melhor densidade computacional!Ei, posso gastar menos!
MAS ESPEREM,TEM MAIS!
Docker + Heroku
Dokku
Docker + Vagrant
Prod-like na sua máquina
DOCKER-BASEDPROMOTIONS
Build: docker pushDeploy: docker pull
DOCKER EXTRASMesoSphereKubernetesOpenShiftFlynnDeisFig
Momento holy sh#t
Q&A
O INCRÉDULO: OK, MAS QUAIS SÃO OSPROBLEMAS COM O DOCKER?
1. Alto no hype cycle2. Preocupações sobre segurança e estabilidade3. Rampa de equipe4. Use cases parciais
O EXPERIENTE: TÁ, MAS E PORQUE EUNÃO POSSO USAR SÓ PUPPET & AFINS?
Poder, pode, mas não vai ser a mesma coisa:a) menor reprodutibilidade e b) menor densidade potencial
O EMPOLGADO: LEGAL, LEGAL, MUITOLEGAL! ONDE EU ASSINO?!?
1. 2. 3.
Crie seu próprio sandboxOuça a própria DockerEntre na IASA/GUCloud (nudge nudge)