SlideShare uma empresa Scribd logo
1 de 56
Deploy Automatizado
usando
Octopus
ANDRÉ MINELLI
OUTUBRO / 2016
Deploy Automatizado
Por que?
Deploy Automatizado
Por que?
◦Fim de roteiro de instalação manual
Deploy Automatizado
Por que?
◦Fim de roteiro de instalação manual
◦Reduz dependência de especialistas e/ou ‘super usuários’
Deploy Automatizado
Por que?
◦Fim de roteiro de instalação manual
◦Reduz dependência de especialistas e/ou ‘super usuários’
◦Reduz chance de erros humanos
Deploy Automatizado
Por que?
◦Fim de roteiro de instalação manual
◦Reduz dependência de especialistas e/ou ‘super usuários’
◦Reduz chance de erros humanos
◦Mais velocidade
Deploy Automatizado
Por que?
◦Fim de roteiro de instalação manual
◦Reduz dependência de especialistas e/ou ‘super usuários’
◦Reduz chance de erros humanos
◦Mais velocidade
Deploy Automatizado
Objetivo Principal:
Deploy Automatizado
Objetivo Principal:
Prover valor mais rápido para os clientes!
Deploy Automatizado
COMO?
Deploy Automatizado
COMO?
Reduzindo o risco de instalações
Deploy Automatizado
◦Se o risco é baixo, o medo é reduzido
Deploy Automatizado
◦Se o risco é baixo, o medo é reduzido
◦Se o medo é reduzido, a frequencia pode aumentar
Deploy Automatizado
◦Se o risco é baixo, o medo é reduzido
◦Se o medo é reduzido, a frequencia pode aumentar
◦Se a frequencia aumenta, mais valor (features e correções)
podem ser entregues mais rapidamente
Deploy Automatizado
◦Se o risco é baixo, o medo é reduzido
◦Se o medo é reduzido, a frequencia pode aumentar
◦Se a frequencia aumenta, mais valor (features e correções)
podem ser entregues mais rapidamente
◦Se valor pode ser entregue mais rapidamente, meus clientes
ficarão felizes mais rápido
Deploy Automatizado
◦Se o risco é baixo, o medo é reduzido
◦Se o medo é reduzido, a frequencia pode aumentar
◦Se a frequencia aumenta, mais valor (features e correções)
podem ser entregues mais rapidamente
◦Se valor pode ser entregue mais rapidamente, meus clientes
ficarão felizes mais rápido
◦Clientes felizes significa que o negócio continuará crescendo
Deploy Automatizado
Intimamente ligado à Agile / Lean:
Somente quando o usuário usa o
produto teremos seu feedback!
Deploy Automatizado
Benefícios adicionais:
Deploy Automatizado
Benefícios adicionais:
◦Rollback simplificado
Deploy Automatizado
Benefícios adicionais:
◦Rollback simplificado
◦Ambientes adicionais (homologação, staging, etc)
facilmente criados
Deploy Automatizado
Benefícios adicionais:
◦Rollback simplificado
◦Ambientes adicionais (homologação, staging, etc)
facilmente criados
◦Contribui para Disaster Recovery
Deploy Automatizado
Benefícios adicionais:
◦Rollback simplificado
◦Ambientes adicionais (homologação, staging, etc)
facilmente criados
◦Contribui para Disaster Recovery
◦Registro das mudanças aplicadas
Deploy Automatizado
◦Passo crucial para Continuous Delivery
◦Capacidade de fazer deploy a cada mudança
◦Quais mudanças entrarão em produção é uma escolha
◦Pré-requisito para Continous Deployment
◦Toda mudança é automaticamente publicada em
produção
Deploy Automatizado
Necessário COMPROMISSO do time:
Nenhuma alteração do servidor deve
ser feita manualmente!
Octopus Deploy
Servidor de automated deployment
Focado em (mas não limitado a):
◦ .NET
◦ Windows
Servidor
◦ Gerencia configurações
◦ Registra histórico e logs
◦ Repositório de packages
Tentáculos
◦ Executam as etapas do processo de deploy
◦ Windows Service em cada servidor (target)
Octopus Deploy x TeamCity
Octopus complementa continuous building
◦TeamCity (ou outro Build Server):
◦compila, testa e analisa código
◦produz artefatos aprovados
◦Octopus
◦Distribui e instala artefatos
◦Aplica configurações específicas do ambiente
Octopus Deploy – Boas práticas
Octopus Deploy – Boas práticas
◦Artefato é construído uma única vez
◦Todos os ambientes recebem o mesmo binário
Octopus Deploy – Boas práticas
◦Artefato é construído uma única vez
◦Todos os ambientes recebem o mesmo binário
◦Valores de configuração não fazem parte do
repositório
◦Devem ser definidos em deploy time
Octopus Deploy – Boas práticas
◦Artefato é construído uma única vez e empacotado
◦Todos os ambientes recebem o mesmo binário
◦Valores de configuração não fazem parte do
repositório
◦Devem ser definidos em deploy time
◦Processo de deploy deve ser igual (ou MUITO
parecido) em todos os ambientes
Octopus Deploy – Integração TeamCity
◦.Net
◦ Gere Nuget packages
◦ Install-Package OctoPack
◦No build step da solution:
◦Marque “Run OctoPack”
◦OctoPack package version: %build.number%
◦Recomendado:
◦Em Build Feature:
◦AssemblyInfo patcher (com mesmo %build.number%)
Octopus Deploy – Integração TeamCity
◦Outros projetos: use artefatos zipados
◦Em General Settings, configure Artifact paths
◦Ex: dist => %PackageName%.zip
◦Salve zip no repositório do Octopus
◦Build step OctopusDeploy: Push packages
◦Utilize parâmetro global OctopusUrl
◦ Crie sua API Key no Profile do usuário do Octopus
Octopus Deploy – Integração TeamCity
◦Crie release no Octopus
◦ Build step “OctopusDeploy: Create Release”
◦ Utilize parâmetro global OctopusUrl
◦ Additional command line arguments
--Packageversion=%build.number%
◦Recomendado
◦ Criar release notes a partir dos commits ou do backlog
◦ Adicione antes o build step “ReleaseNotesFromVso”
◦ Adicione nos argumentos da linha de comando para criar a release
--
ReleaseNotesFile="%system.teamcity.build.tempDir%relea
senotesfile_%teamcity.build.id%_%build.number%.txt“
Octopus Deploy – Configuração Básica
Ambientes
◦Máquinas
◦Papéis
Projetos
◦Parte de Grupo de Projetos
◦Lifecycle
◦Process
◦Variables
MÃO NA MASSA!
Octopus Deploy – Configurações de
ambientes
◦Tentáculo – utilize ‘Listening Tentacle’
◦Roles – baseado em função
◦ Não é ambiente
◦ Não é versão de S.O.
◦Mesma máquina pode fazer parte de mais de um
ambiente
Octopus Deploy – Configurações de
projetos
Octopus Deploy – Configurações de
projetos
Dica:
◦Processo em 3 ‘etapas’:
Octopus Deploy – Configurações de
projetos
Dica:
◦Processo em 3 ‘etapas’:
1. Configurar/verificar ambiente/SO
◦ Windows Features, Firewall, Certificados, etc
◦ Obs: trabalho para Chef / Puppet / etc
Octopus Deploy – Configurações de
projetos
Dica:
◦Processo em 3 ‘etapas’:
1. Configurar/verificar ambiente/SO
◦ Windows Features, Firewall, Certificados, etc
◦ Obs: trabalho para Chef / Puppet / etc
2. Instalação propriamente dita
◦ Baixar package e aplicar configurações
◦ Configurar serviços, sites, tarefas agendadas, etc
Octopus Deploy – Configurações de
projetos
Dica:
◦Processo em 3 ‘etapas’:
1. Configurar/verificar ambiente/SO
◦ Windows Features, Firewall, Certificados, etc
◦ Obs: trabalho para Chef / Puppet / etc
2. Instalação propriamente dita
◦ Baixar package e aplicar configurações
◦ Configurar serviços, sites, tarefas agendadas, etc
3. Testes / notificação
◦ Scripts com smoke tests
◦ Notificações – email, Slack, Webhook, etc
Octopus Deploy – Configurações de
projetos
◦Steps do processo podem ter condições:
◦Papeis (Roles)
◦Ambientes (Environment)
◦Selecionam em quais targets o step executará
Octopus Deploy – Configurações de
projetos
Package deploys:
◦Usado para Windows Services e IIS Apps
◦Tipos de packages:
◦Nuget (repositório interno ou externo)
◦Zip, Tar, etc (repositório interno)
◦TeamCity funciona como repositório externo
Octopus Deploy – Configurações de
projetos
◦Utilize variáveis para alterar valores de configurações
◦Podem ser aplicadas por role, environment, target ou mesmo
step
◦Necessário habilitar a feature “Configuration variables”
◦Utilize transformações para demais alterações
◦Exemplo: adicionar ou remover elementos nos arquivos
.config
◦Necessário habilitar a feature “Configuration transforms”
Octopus Deploy – Configurações de
projetos
Importante:
◦Steps executam em sequência
◦Ação(ões) do step executa(m) em paralelo em cada target
◦Variáveis devem existir nos arquivos para serem
substituídas
◦Conteúdo das váriáveis e steps do processo são salvos
para cada release gerada
◦ Variáveis podem ser atualizadas
Octopus Deploy – Saindo do básico
◦Adicione process steps da Community Library
◦AWS
◦Azure
◦File System, etc
◦Custom scripts (powershell, C#) nos packages ou steps
◦ PreDeploy
◦ Deploy
◦ PostDeploy
◦ DeployFailed
Octopus Deploy – Saindo do básico
◦Crie Channels para diferentes lifecycles
◦Hotfix -> direto para produção
◦Canal por componente (e um canal para todos juntos)
◦TeamCity: informe o channel da release no step
“OctopusDeploy: Create Release”
Octopus Deploy – Saindo do básico
◦Defina pipelines mais complexos
◦Rolling
◦Canary
◦Blue-green
Octopus Deploy
– Rolling
Octopus Deploy
– Rolling
Octopus Deploy
– Canary
Octopus Deploy
– Canary
Octopus Deploy
– Blue / Green
Referências e material adicional
Understanding DevOps – Part 6: Continuous Deployment vs
Continuous Delivery
◦ https://sdarchitect.wordpress.com/2013/10/16/understanding-devops-part-6-
continuous-deployment/
Continuous Delivery Vs. Continuous Deployment: What's the Diff?
◦ https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-
s-diff
The Benefits of Deployment Automation
◦ http://download.octopusdeploy.com/files/whitepaper-automated-deployment-
octopus-deploy.pdf
Referências e material adicional
Octopus Deploy Documentation
◦ http://docs.octopusdeploy.com/display/OD/Getting+started
Octopus Deploy Patterns
◦ http://docs.octopusdeploy.com/display/OD/Patterns
Enable or Disable Windows Features using DISM
◦ https://technet.microsoft.com/en-
us/library/hh824822.aspx?f=255&MSPPError=-2147217396

Mais conteúdo relacionado

Mais procurados

Continuous integration, delivery and deployment in nodejs
Continuous integration, delivery and deployment in nodejsContinuous integration, delivery and deployment in nodejs
Continuous integration, delivery and deployment in nodejsDan Jesus
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeStefan Teixeira
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testesElias Nogueira
 
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de TestesVR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de TestesStefan Teixeira
 
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Stefan Teixeira
 
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!Gdg quality fest 2018 - Metralhando o próprio produto com tudo!
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!Flávio Pimenta
 
Infraestrutura Imutável - Agile Trends
Infraestrutura Imutável - Agile TrendsInfraestrutura Imutável - Agile Trends
Infraestrutura Imutável - Agile TrendsFernando Ike
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsStefan Teixeira
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeRoberto Hashioka
 
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCCTDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCCStefan Teixeira
 
Jenkins, o CI ao seu dispor
Jenkins, o CI ao seu disporJenkins, o CI ao seu dispor
Jenkins, o CI ao seu dispors4nx
 
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnitAgile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnitStefan Teixeira
 
Testadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerTestadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerStefan Teixeira
 
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amorMeetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amorStefan Teixeira
 
Hands on para (web)Developers Docker vs Vagrant
Hands on para (web)Developers Docker vs VagrantHands on para (web)Developers Docker vs Vagrant
Hands on para (web)Developers Docker vs VagrantIngo Jauch
 
A Importância do Teste Continuo
A Importância do Teste ContinuoA Importância do Teste Continuo
A Importância do Teste ContinuoElias Nogueira
 

Mais procurados (20)

Continuous integration, delivery and deployment in nodejs
Continuous integration, delivery and deployment in nodejsContinuous integration, delivery and deployment in nodejs
Continuous integration, delivery and deployment in nodejs
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testes
 
Jenkins
JenkinsJenkins
Jenkins
 
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de TestesVR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
 
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
 
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!Gdg quality fest 2018 - Metralhando o próprio produto com tudo!
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!
 
Infraestrutura Imutável - Agile Trends
Infraestrutura Imutável - Agile TrendsInfraestrutura Imutável - Agile Trends
Infraestrutura Imutável - Agile Trends
 
Deploy moderno para php
Deploy moderno para phpDeploy moderno para php
Deploy moderno para php
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e Compose
 
JUnit
JUnitJUnit
JUnit
 
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCCTDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
 
Jenkins, o CI ao seu dispor
Jenkins, o CI ao seu disporJenkins, o CI ao seu dispor
Jenkins, o CI ao seu dispor
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnitAgile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
 
Testadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerTestadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de Docker
 
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amorMeetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
 
Hands on para (web)Developers Docker vs Vagrant
Hands on para (web)Developers Docker vs VagrantHands on para (web)Developers Docker vs Vagrant
Hands on para (web)Developers Docker vs Vagrant
 
A Importância do Teste Continuo
A Importância do Teste ContinuoA Importância do Teste Continuo
A Importância do Teste Continuo
 

Destaque

Smarter deployments with octopus deploy
Smarter deployments with octopus deploySmarter deployments with octopus deploy
Smarter deployments with octopus deployThibaud Gravrand
 
dotnetsheff: Continuous delivery with Team City and Octopus Deploy
dotnetsheff: Continuous delivery with Team City and Octopus Deploydotnetsheff: Continuous delivery with Team City and Octopus Deploy
dotnetsheff: Continuous delivery with Team City and Octopus DeployKevin Kuszyk
 
Making of Octopus Deploy - DDD Melbourne 2015
Making of Octopus Deploy - DDD Melbourne 2015Making of Octopus Deploy - DDD Melbourne 2015
Making of Octopus Deploy - DDD Melbourne 2015octopusdeploy
 
Анатолий Кулаков «Octopus Deploy во имя добра»
Анатолий Кулаков «Octopus Deploy во имя добра»Анатолий Кулаков «Octopus Deploy во имя добра»
Анатолий Кулаков «Octopus Deploy во имя добра»SpbDotNet Community
 
Octopus Deploy Tech Fest 2014
Octopus Deploy Tech Fest 2014Octopus Deploy Tech Fest 2014
Octopus Deploy Tech Fest 2014adriantwright
 
Getting started with Octopus Deploy
Getting started with Octopus DeployGetting started with Octopus Deploy
Getting started with Octopus DeployKaroline Klever
 
Octopus Deploy and how to stop deploying like an idiot
Octopus Deploy and how to stop deploying like an idiotOctopus Deploy and how to stop deploying like an idiot
Octopus Deploy and how to stop deploying like an idiotdamovisa
 
Paul Allen's Octopus
Paul Allen's OctopusPaul Allen's Octopus
Paul Allen's OctopusDaryll McDade
 

Destaque (8)

Smarter deployments with octopus deploy
Smarter deployments with octopus deploySmarter deployments with octopus deploy
Smarter deployments with octopus deploy
 
dotnetsheff: Continuous delivery with Team City and Octopus Deploy
dotnetsheff: Continuous delivery with Team City and Octopus Deploydotnetsheff: Continuous delivery with Team City and Octopus Deploy
dotnetsheff: Continuous delivery with Team City and Octopus Deploy
 
Making of Octopus Deploy - DDD Melbourne 2015
Making of Octopus Deploy - DDD Melbourne 2015Making of Octopus Deploy - DDD Melbourne 2015
Making of Octopus Deploy - DDD Melbourne 2015
 
Анатолий Кулаков «Octopus Deploy во имя добра»
Анатолий Кулаков «Octopus Deploy во имя добра»Анатолий Кулаков «Octopus Deploy во имя добра»
Анатолий Кулаков «Octopus Deploy во имя добра»
 
Octopus Deploy Tech Fest 2014
Octopus Deploy Tech Fest 2014Octopus Deploy Tech Fest 2014
Octopus Deploy Tech Fest 2014
 
Getting started with Octopus Deploy
Getting started with Octopus DeployGetting started with Octopus Deploy
Getting started with Octopus Deploy
 
Octopus Deploy and how to stop deploying like an idiot
Octopus Deploy and how to stop deploying like an idiotOctopus Deploy and how to stop deploying like an idiot
Octopus Deploy and how to stop deploying like an idiot
 
Paul Allen's Octopus
Paul Allen's OctopusPaul Allen's Octopus
Paul Allen's Octopus
 

Semelhante a Automatizando deploy com Octopus

Continuous Building usando TeamCity
Continuous Building usando TeamCityContinuous Building usando TeamCity
Continuous Building usando TeamCityAndré Minelli
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de ValorSamanta Cicilia
 
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)Wellington Silva
 
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...iMasters
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous DeliverySamanta Cicilia
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horasSamanta Cicilia
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoArtur Felipe Sousa
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous DeliverySamanta Cicilia
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Samanta Cicilia
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterEric Silva
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroAndré Luís Cardoso
 
VDI e Projeto OSDVT
VDI e Projeto OSDVTVDI e Projeto OSDVT
VDI e Projeto OSDVTapsegundo
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Felipe Klerk Signorini
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHPLuiz Messias
 
Técnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoTécnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoMario Chaves
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 

Semelhante a Automatizando deploy com Octopus (20)

Continuous Building usando TeamCity
Continuous Building usando TeamCityContinuous Building usando TeamCity
Continuous Building usando TeamCity
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
 
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
 
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous Delivery
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produção
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to hero
 
VDI e Projeto OSDVT
VDI e Projeto OSDVTVDI e Projeto OSDVT
VDI e Projeto OSDVT
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHP
 
Técnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoTécnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em django
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 

Automatizando deploy com Octopus

  • 3. Deploy Automatizado Por que? ◦Fim de roteiro de instalação manual
  • 4. Deploy Automatizado Por que? ◦Fim de roteiro de instalação manual ◦Reduz dependência de especialistas e/ou ‘super usuários’
  • 5. Deploy Automatizado Por que? ◦Fim de roteiro de instalação manual ◦Reduz dependência de especialistas e/ou ‘super usuários’ ◦Reduz chance de erros humanos
  • 6. Deploy Automatizado Por que? ◦Fim de roteiro de instalação manual ◦Reduz dependência de especialistas e/ou ‘super usuários’ ◦Reduz chance de erros humanos ◦Mais velocidade
  • 7. Deploy Automatizado Por que? ◦Fim de roteiro de instalação manual ◦Reduz dependência de especialistas e/ou ‘super usuários’ ◦Reduz chance de erros humanos ◦Mais velocidade
  • 9. Deploy Automatizado Objetivo Principal: Prover valor mais rápido para os clientes!
  • 11. Deploy Automatizado COMO? Reduzindo o risco de instalações
  • 12. Deploy Automatizado ◦Se o risco é baixo, o medo é reduzido
  • 13. Deploy Automatizado ◦Se o risco é baixo, o medo é reduzido ◦Se o medo é reduzido, a frequencia pode aumentar
  • 14. Deploy Automatizado ◦Se o risco é baixo, o medo é reduzido ◦Se o medo é reduzido, a frequencia pode aumentar ◦Se a frequencia aumenta, mais valor (features e correções) podem ser entregues mais rapidamente
  • 15. Deploy Automatizado ◦Se o risco é baixo, o medo é reduzido ◦Se o medo é reduzido, a frequencia pode aumentar ◦Se a frequencia aumenta, mais valor (features e correções) podem ser entregues mais rapidamente ◦Se valor pode ser entregue mais rapidamente, meus clientes ficarão felizes mais rápido
  • 16. Deploy Automatizado ◦Se o risco é baixo, o medo é reduzido ◦Se o medo é reduzido, a frequencia pode aumentar ◦Se a frequencia aumenta, mais valor (features e correções) podem ser entregues mais rapidamente ◦Se valor pode ser entregue mais rapidamente, meus clientes ficarão felizes mais rápido ◦Clientes felizes significa que o negócio continuará crescendo
  • 17. Deploy Automatizado Intimamente ligado à Agile / Lean: Somente quando o usuário usa o produto teremos seu feedback!
  • 20. Deploy Automatizado Benefícios adicionais: ◦Rollback simplificado ◦Ambientes adicionais (homologação, staging, etc) facilmente criados
  • 21. Deploy Automatizado Benefícios adicionais: ◦Rollback simplificado ◦Ambientes adicionais (homologação, staging, etc) facilmente criados ◦Contribui para Disaster Recovery
  • 22. Deploy Automatizado Benefícios adicionais: ◦Rollback simplificado ◦Ambientes adicionais (homologação, staging, etc) facilmente criados ◦Contribui para Disaster Recovery ◦Registro das mudanças aplicadas
  • 23. Deploy Automatizado ◦Passo crucial para Continuous Delivery ◦Capacidade de fazer deploy a cada mudança ◦Quais mudanças entrarão em produção é uma escolha ◦Pré-requisito para Continous Deployment ◦Toda mudança é automaticamente publicada em produção
  • 24. Deploy Automatizado Necessário COMPROMISSO do time: Nenhuma alteração do servidor deve ser feita manualmente!
  • 25. Octopus Deploy Servidor de automated deployment Focado em (mas não limitado a): ◦ .NET ◦ Windows Servidor ◦ Gerencia configurações ◦ Registra histórico e logs ◦ Repositório de packages Tentáculos ◦ Executam as etapas do processo de deploy ◦ Windows Service em cada servidor (target)
  • 26. Octopus Deploy x TeamCity Octopus complementa continuous building ◦TeamCity (ou outro Build Server): ◦compila, testa e analisa código ◦produz artefatos aprovados ◦Octopus ◦Distribui e instala artefatos ◦Aplica configurações específicas do ambiente
  • 27.
  • 28. Octopus Deploy – Boas práticas
  • 29. Octopus Deploy – Boas práticas ◦Artefato é construído uma única vez ◦Todos os ambientes recebem o mesmo binário
  • 30. Octopus Deploy – Boas práticas ◦Artefato é construído uma única vez ◦Todos os ambientes recebem o mesmo binário ◦Valores de configuração não fazem parte do repositório ◦Devem ser definidos em deploy time
  • 31. Octopus Deploy – Boas práticas ◦Artefato é construído uma única vez e empacotado ◦Todos os ambientes recebem o mesmo binário ◦Valores de configuração não fazem parte do repositório ◦Devem ser definidos em deploy time ◦Processo de deploy deve ser igual (ou MUITO parecido) em todos os ambientes
  • 32. Octopus Deploy – Integração TeamCity ◦.Net ◦ Gere Nuget packages ◦ Install-Package OctoPack ◦No build step da solution: ◦Marque “Run OctoPack” ◦OctoPack package version: %build.number% ◦Recomendado: ◦Em Build Feature: ◦AssemblyInfo patcher (com mesmo %build.number%)
  • 33. Octopus Deploy – Integração TeamCity ◦Outros projetos: use artefatos zipados ◦Em General Settings, configure Artifact paths ◦Ex: dist => %PackageName%.zip ◦Salve zip no repositório do Octopus ◦Build step OctopusDeploy: Push packages ◦Utilize parâmetro global OctopusUrl ◦ Crie sua API Key no Profile do usuário do Octopus
  • 34. Octopus Deploy – Integração TeamCity ◦Crie release no Octopus ◦ Build step “OctopusDeploy: Create Release” ◦ Utilize parâmetro global OctopusUrl ◦ Additional command line arguments --Packageversion=%build.number% ◦Recomendado ◦ Criar release notes a partir dos commits ou do backlog ◦ Adicione antes o build step “ReleaseNotesFromVso” ◦ Adicione nos argumentos da linha de comando para criar a release -- ReleaseNotesFile="%system.teamcity.build.tempDir%relea senotesfile_%teamcity.build.id%_%build.number%.txt“
  • 35. Octopus Deploy – Configuração Básica Ambientes ◦Máquinas ◦Papéis Projetos ◦Parte de Grupo de Projetos ◦Lifecycle ◦Process ◦Variables
  • 37. Octopus Deploy – Configurações de ambientes ◦Tentáculo – utilize ‘Listening Tentacle’ ◦Roles – baseado em função ◦ Não é ambiente ◦ Não é versão de S.O. ◦Mesma máquina pode fazer parte de mais de um ambiente
  • 38. Octopus Deploy – Configurações de projetos
  • 39. Octopus Deploy – Configurações de projetos Dica: ◦Processo em 3 ‘etapas’:
  • 40. Octopus Deploy – Configurações de projetos Dica: ◦Processo em 3 ‘etapas’: 1. Configurar/verificar ambiente/SO ◦ Windows Features, Firewall, Certificados, etc ◦ Obs: trabalho para Chef / Puppet / etc
  • 41. Octopus Deploy – Configurações de projetos Dica: ◦Processo em 3 ‘etapas’: 1. Configurar/verificar ambiente/SO ◦ Windows Features, Firewall, Certificados, etc ◦ Obs: trabalho para Chef / Puppet / etc 2. Instalação propriamente dita ◦ Baixar package e aplicar configurações ◦ Configurar serviços, sites, tarefas agendadas, etc
  • 42. Octopus Deploy – Configurações de projetos Dica: ◦Processo em 3 ‘etapas’: 1. Configurar/verificar ambiente/SO ◦ Windows Features, Firewall, Certificados, etc ◦ Obs: trabalho para Chef / Puppet / etc 2. Instalação propriamente dita ◦ Baixar package e aplicar configurações ◦ Configurar serviços, sites, tarefas agendadas, etc 3. Testes / notificação ◦ Scripts com smoke tests ◦ Notificações – email, Slack, Webhook, etc
  • 43. Octopus Deploy – Configurações de projetos ◦Steps do processo podem ter condições: ◦Papeis (Roles) ◦Ambientes (Environment) ◦Selecionam em quais targets o step executará
  • 44. Octopus Deploy – Configurações de projetos Package deploys: ◦Usado para Windows Services e IIS Apps ◦Tipos de packages: ◦Nuget (repositório interno ou externo) ◦Zip, Tar, etc (repositório interno) ◦TeamCity funciona como repositório externo
  • 45. Octopus Deploy – Configurações de projetos ◦Utilize variáveis para alterar valores de configurações ◦Podem ser aplicadas por role, environment, target ou mesmo step ◦Necessário habilitar a feature “Configuration variables” ◦Utilize transformações para demais alterações ◦Exemplo: adicionar ou remover elementos nos arquivos .config ◦Necessário habilitar a feature “Configuration transforms”
  • 46. Octopus Deploy – Configurações de projetos Importante: ◦Steps executam em sequência ◦Ação(ões) do step executa(m) em paralelo em cada target ◦Variáveis devem existir nos arquivos para serem substituídas ◦Conteúdo das váriáveis e steps do processo são salvos para cada release gerada ◦ Variáveis podem ser atualizadas
  • 47. Octopus Deploy – Saindo do básico ◦Adicione process steps da Community Library ◦AWS ◦Azure ◦File System, etc ◦Custom scripts (powershell, C#) nos packages ou steps ◦ PreDeploy ◦ Deploy ◦ PostDeploy ◦ DeployFailed
  • 48. Octopus Deploy – Saindo do básico ◦Crie Channels para diferentes lifecycles ◦Hotfix -> direto para produção ◦Canal por componente (e um canal para todos juntos) ◦TeamCity: informe o channel da release no step “OctopusDeploy: Create Release”
  • 49. Octopus Deploy – Saindo do básico ◦Defina pipelines mais complexos ◦Rolling ◦Canary ◦Blue-green
  • 55. Referências e material adicional Understanding DevOps – Part 6: Continuous Deployment vs Continuous Delivery ◦ https://sdarchitect.wordpress.com/2013/10/16/understanding-devops-part-6- continuous-deployment/ Continuous Delivery Vs. Continuous Deployment: What's the Diff? ◦ https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what- s-diff The Benefits of Deployment Automation ◦ http://download.octopusdeploy.com/files/whitepaper-automated-deployment- octopus-deploy.pdf
  • 56. Referências e material adicional Octopus Deploy Documentation ◦ http://docs.octopusdeploy.com/display/OD/Getting+started Octopus Deploy Patterns ◦ http://docs.octopusdeploy.com/display/OD/Patterns Enable or Disable Windows Features using DISM ◦ https://technet.microsoft.com/en- us/library/hh824822.aspx?f=255&MSPPError=-2147217396

Notas do Editor

  1. Roteiro de instalação = documentação: ficam desatualizados rapidamente
  2. Pegar as senhas corretas, verificar se tenho as permissões adequadas… Silos de conhecimento
  3. Enganos = update sem where
  4. Velocidade – principalmente quando vários servidores devem ser atualizados
  5. Na verdade, tudo isto é consequencia: Automatização = eficiência ->
  6. Risco baixo = estável, fácil, rápido, reproduzivel
  7. Lean = Build (fast, cheap), Measure, Learn. Repeat!
  8. Disaster Recovery -> a partir do repositorio de código (e nova infra condizente) é possivel reconstruir rapidamente o produto Obs: necessário um backup para retornar ao ponto anterior
  9. Ambientes adicionais OU novos servidores!! Todos os componentes utilizados e como devem ser instalados estão ‘documentados’ Registro = o que, quem, quando, onde
  10. Continous Deployment exige uma maturidade (do processo de testes pré-producao e de monitoramento pós producao) muito maior
  11. Nem sempre é possível ou rapido: -pacotes sem instalação (crie um package para chocolatey) -configurações do Windows (verifique opções de linha de comando,powershell, registro) Pendencia: infraestrutura (HA, firewall, policies do Windows) Ferramentas como Chef e Puppet complementam a automatização
  12. Não só Windows – deploy via ssh / sftp / mono Tentaculo = agente(s) nos servidores destino
  13. Como comparei com o TC…
  14. Package = nuget ou zip com a versão como sufixo
  15. 1-Diferença entre ambientes é apenas configuração! Nao há binario diferente por ambiente!
  16. 2-Se uma conf. ou ambiente alterar, basta fazer um redeploy de um binário ou alterar o processo
  17. 3-O processo de deploy deve ser repetivel e estavel. Quanto menos alterar entre ambiente, melhor testado será Abrindo parentheses e detalhando primeira boa prática: construir o artefato -> TeamCity
  18. MAO na massa: mostrar solution TeamCity possui Nuget Server interno para packages gerados
  19. Build step OctopusDeploy é wrapper sobre Octo.exe (ambos baixados no site do Octopus) Obs: Usuário da API Key deve ter permissão no projeto!!!
  20. Obs: Usuário da API Key deve ter permissão no projeto!!! ReleaseNotesFromVSO: Commits devem ter #<id> da tarefa ou item do backlog Fim do parentheses – de volta ao Octopus!
  21. Maquinas = devem ter o Tentáculo instalado Projeto = produto / plataforma / componente que será instalado Lifecycle = pipeline de ‘promoção’ de versões entre ambientes Process = passos para um deploy Variables = customização por ambiente / papel
  22. Ver roteiro
  23. Roles descrevendo ambiente ou s.o. são melhor tratados como ambientes mesmo
  24. Voltar ao roteiro: (linha 20) mostrar library e criação de projetos
  25. Mantra: automatizar tudo que for possível!!!
  26. Configurar ambiente: steps “Windows – Ensure Features are installed” e “Chocolatey – Ensure installed” Testes – scripts em powershell ou C#
  27. Testes – scripts em powershell ou C# Voltar para demo, criando processo para projeto demo
  28. Obs: Snapshot das variáveis e processo são uma diferença crucial em relação ao Teamcity, onde os steps de build atuais são sempre executados (alias, por isso é recomendado salvar seu processo de build no repositorio de codigo tb) Dica para utilizar a ultima versao do processo: recriar release como um hotfix, mas usando a ultima versao dos packages
  29. Exemplo: Deploy.ps1 para aplicar migrations
  30. Channel pode ser especificado no step “OctopusDeploy: Create release” do Teamcity
  31. -Rolling – deploy de X targets por vez (window size + child steps para gerencia L.B.) -Canary – 3 opções: manual (escolhendo targets); com manual intervention + duplicação dos passos; com multiplos ambientes -Blue-green – ambientes blue e green
  32. Deploy de X targets por vez (window size + child steps para gerencia L.B.)
  33. Deploy de X targets por vez (window size + child steps para gerencia L.B.)
  34. 3 opções: manual (escolhendo targets); com manual intervention + duplicação dos passos; com multiplos ambientes
  35. 3 opções: manual (escolhendo targets); com manual intervention + duplicação dos passos; com multiplos ambientes
  36. ambientes blue e green