56
Deploy Automatizado usando Octopus ANDRÉ MINELLI OUTUBRO / 2016

Deploy Automatizado usando Octopus

Embed Size (px)

Citation preview

Deploy Automatizado

usando Octopus

ANDRÉ MINELLIOUTUBRO / 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 velocidadeEFIC

IÊNCIA

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%\releasenotesfile_%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&MSPPE

rror=-2147217396