• Início
  • Institucional
    • Fale Conosco
    • Nossa Equipe
    • Sobre
  • ShowCasts
  • Speedtest
  • Vagas
  • Categorias
    • Android
    • Dev
    • GNU/Linux
    • Rede
    • Windows
  • Grupos

OpsWorks: Conhecendo a ferramenta de gerência de configuração da Amazon

Postado em 16 de janeiro de 2015 por Ricardo Martins

 

AWS_OpsWorks-512x320

Olá pessoal, sou o Ricardo Martins, e este é o meu primeiro artigo por aqui. Gostaria em primeiro lugar de agradecer ao meu xará pela oportunidade de poder compartilhar com vocês um pouco de informação neste excelente canal que é o Mundo TI Brasil.

Este artigo sobre o OpsWorks está muito relacionado com o tema gerência de configuração, e da mesma forma também com um outro assunto que vem ganhando bastante repercussão atualmente: DevOps.

O foco não é falar sobre Gerência de Configuração e/ou DevOps, mas como estão relacionados com o OpsWorks, é importante introduzir o conceito além de deixar alguns links essenciais para que você, sysadmin, possa começar a se interessar por isso o quanto antes.

A gerência de configuração está relacionada com um controle maior sobre arquivos de configuração, versões, documentação, procedimentos, etc. Hoje existem algumas diversas ferramentas para te ajudar neste trabalho, como Puppet, Chef, Ansible, Salt, OpsWorks. A gerência de configuração traz o conceito de infraestrutura como código (infrastructure as a code), que permite uma automação gerenciada e simplifica o processo de documentação.

Abaixo, algumas leituras altamente recomendadas, do Guto Carvalho:

http://gutocarvalho.net/wordpress/2012/05/13/mantenha-suas-configuracoes-nos-trilhos/;
http://gutocarvalho.net/wordpress/2012/05/22/gerenciando-configuracoes-com-o-puppet/comment-page-1/.

O conceito de DevOps está relacionado com a integração entre times de desenvolvedores e times de operações. Um DevOp é alguém com skill de implementar infraestrutura através de código, utilizando ferramentas de gerência de configuração, orquestração e provisionamento e utilizando metodologias e práticas muito comuns em times de desenvolvimento como como Kanbam, Scrum, Sprints, Versionamento.

Mais leituras que você deve fazer:

http://gutocarvalho.net/octopress/2013/03/16/o-que-e-um-devops-afinal/;
https://sdarchitect.wordpress.com/2013/06/06/slides-ibm-innovate-2013-session-devops-101/;
https://sdarchitect.wordpress.com/understanding-devops/.

E por último, mas não menos importante, um slide sensacional de um grande amigo, Diego Morales, voltado para todos os sysadmins que estejam interessados em melhorar seus skills: http://dgmorales.info/sysadmin/.

Agora que já tem mais informações sobre os conceitos que envolvem o OpsWorks, vamos falar sobre ele.

O OpsWorks é a ferramenta que permite criar e gerenciar stacks e aplicações. Com ele você pode provisionar recursos na AWS, gerenciar a configuração e fazer o deploy de aplicações. Informações detalhadas em http://aws.amazon.com/documentation/opsworks/.

O OpsWorks é baseado no Chef, e assim como outras ferramentas de gerência de configuração funciona baseado no uso de receitas (cookbooks). Nas receitas, você especifica o que quer que realmente seja feito na configuração. Um excelente documento está disponível aqui: http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-ug.pdf, mas vou comentar algo abaixo.

O OpsWorks fornece de forma simples e flexível de criar e gerenciar stacks e aplicações. Ele suporta um conjunto de componentes padrões, includindo servidores de aplicação, servidores de banco de dados, balanceadores de carga e outras coisas que você pode usasr em sua stack. Todos estes componentes podem ser iniciados com uma simples configuração e estando imediatamente prontos para serem utilizados.

No ecossistema do Opsworks, existem alguns conceitos chave, à seguir:

– Stack: Uma stack é um componente chave do OpsWorks. É como se fosse um container para os seus recursos, sejam eles instâncias, volumes EBS, endereços EIP, instâncias RDS. A stack ajuda você a gerenciar e organizar seus recursos como um grupo e também define algumas configurações de região. Em outras palavras, pode ser definido como os seus ambientes. Você pode ter uma stack com nome de desenvolvimento, onde estão os seus recursos de desenvolvimento, uma stack de homologação, staging, produção, ou qualquer outro nome que você queira dar.

– Layer (Camadas): Você define os componentes da sua stack adicionando layers. Uma layer é como se fosse uma role. Você pode ter a layer de servidores web, a layer de servidores proxy, layer de servidores de aplicação, etc. Você pode inserir sua instancia em uma layer, e pela layer será determinado quais pacotes devem ser instaladas na sua instância por exemplo. Vamos supor que você tem uma stack de desenvolvimento. Nela você pode por exemplo ter duas layers de Nginx, sendo uma chamada por exemplo, Nginx-Stable, e outra Nginx-Testing. Uma delas você usa para testar uma versão estável, e outra uma versão em teste do Nginx. Não importa se vocẽ tiver 1 ou 10 instâncias em cada layer. Se você quer atualizar a versão do Nginx-Stable, com um clique você atualiza todas as suas instâncias da layer Nginx-Stable, por exemplo.

– Recipes (Receitas) e Eventos LifeCycle (Eventos de ciclo de vida): O OpsWorks depende de recipes (receitas) do Chef (http://docs.chef.io/recipes.html) para realizar tarefas como instalar pacotes nas instâncias, fazer o deploy de aplicações, configurar load balancers, etc. Uma feature interessante é o conjunto de eventos de lifecycle: Setup, Configure, Deploy, Undeploy e Shutdown, que automaticamente rodam as recipes apropriadas no tempo apropriado em cada instância.

Cada layer tem um conjunto de recipes para cada evento de lifecycle que é executado nas instâncias desta layer. Por exemplo, vamos supor que você esteja configurando uma layer que terá uma instância de uma App que rode em PHP. Assim que a instância for inicializada o OpsWorks faria o seguinte:

  1. Executar as recipes de Setup da Layer, que irá realizar as tarefas de instalar e configurar o servidor para poder rodar a aplicação em PHP;
  2. Executar as recipes de Deploy da Layer, que irá de fato colocar na instância o conteúdo da aplicação php à partir de um repositório que pode ser por exemplo um bucket no S3 ou ainda no Github. Ele pode ainda executar tarefas como fazer um restart de um serviço por exemplo, para validar as configurações do conteúdo disponibilizado;
  3. Executar a recipe de Configure em cada instância da stack, para eventualmente ajustar a configuração de demais componentes da sua stack, que sejam necessários para acomodar e/ou funcionar em conjunto com sua nova instância.

– Instâncias: Uma instância representa um recurso computacional, como uma instância EC2. Ela define a configuração básica do recurso, como sistema operacional e tamanho. Outras configurações, como endereços EIP’s ou volumes de disco EBS, são definidos na layer. Você pode usar o OpsWorks para criar as suas instâncias e adicioná-las em uma layer específica. Quando você dá um start na instância, o OpsWorks cria sua sua instância EC2 usando as configurações especificadas no tipo de instância escolhida e na layer que ela fará parte. Assim que o processo de boot é finalizado, o OpsWorks instala um agente que irá ser responsável por realizar a comunicação entre a instância e o serviço que executa as recipes apropriadas em resposta aos eventos de lifecycle.

Um detalhe interessante é que o OpsWorks suporta os seguintes tipos de instâncias, caracterizados por como elas são iniciadas e paradas:

  • Instâncias 24/7: São iniciadas manualmente e irão ficar em funcionamento até que você mande parar;
  • Instâncias load-based: São automaticamente iniciadas e paradas pelo OpsWorks, baseado nas métricas especificadas de carga, como por exemplo, uso de CPU. Isto permite que sua stack automaticamente se ajuste á quantidade de tráfego que recebe.
  • Instâncias time-based: São iniciadas pelo OpsWorks em um agendamento diário e/ou semanal especificado por você. Facilita se você tem padrões de comportamento na carga das suas instâncias.

O OpsWorks também suporte instâncias “auto-heal”, que são instâncias que se o agente percebe que houve uma perda na comunicação com a instância, automaticamente faz um stop/start na instância. Além disso você também pode incorporar recursos computacionais na sua stack, que tenham sido criados fora do OpsWorks, neste caso, instâncias EC2 que você tenha criado diretamente no console da WEB, na CLI ou via API. E o melhor: suas máquinas rodando em seu próprio hardware no seu datacenter tradicional, ou ainda suas máquinas virtuais no seu hypervisor preferido também podem ser incluídas no OpsWorks.

– Apps: Você armazenda suas aplicações e arquivos relacionados em repositórios como um bucket no S3. Cada aplicação é representada por um app, que especifica o tipo de aplicação e contém as informações que o OpsWorks precisa para realizar o deploy da aplicação à partir de um repositório nas suas instâncias. Os deploys das aplicações podem ser feitos de duas formas:

  • Automático: Quando você inicializa sua instância com a aplicação, o OpsWorks automaticamente realiza o deploy de todas as aplicações e tipos apropriados. Por exemplo, Aplicações Java serão “deployadas” nas instâncias da layer “Java”;
  • Manualmente: Se você tem uma nova aplicação ou deseja atualizar uma aplicação existente, você pode manualmente realizar o deploy para suas instâncias.

Quando você realiza o deploy de uma aplicação, o OpsWorks executa as recipes de Deploy nas suas instâncias. A receita de Deploy realiza o download da aplicação à partir do seu repositório para a instância e realiza as tarefas relacionadas, como configurar o servidor e/ou reinicializar um serviço.

Bom, na minha opinião a melhor forma de aprender, é fazendo. Então, não perca o próximo post. Estou preparando um lab hands-on sobre o OpsWorks :D

Até a próxima!

Publicado em AWS, Cloud Computing, GNU/Linux | Tags: aws, cloud computing, devops, opsworks | 3 Comentários
« [VIDEO] Webcast sobre Windows 10 em Desktops e Tablets
[VIDEO] Webcast Deployment Fundamentals – Construindo o Ambiente »

3 thoughts on “OpsWorks: Conhecendo a ferramenta de gerência de configuração da Amazon”

  1. Henrique diz
    19 de janeiro de 2015 às 14:57

    Ricardo Martins, não tenho conhecimento sobre a ferramenta , mas muito interessa o novo post lab para ter uma visão macro.

    Parabéns pela iniciativa!

    Henrique Rosa

    Responder
  2. MicrosoftMan diz
    20 de janeiro de 2015 às 13:46

    Ficou bem bacana Ricardo, o que acha de preparar um lab e apresentarmos isso em algumas sessões de WebCasts ? abs.

    Responder
  3. Ricardo Martins diz
    21 de janeiro de 2015 às 13:39

    Sem dúvidas seria sensacional. Eu estou com problemas na minha máquina em casa, e estou fazendo algumas cotações para trocar. Assim que concluir isso, podemos marcar sim!

    Responder

Deixe uma resposta Cancelar resposta

Páginas

  • Autores
    • Carlos Sathler
    • Douglas Portugal
    • Erick Martinez
    • Jeferson Salles
    • Maurício Nunes
    • Mauro Sérgio
    • Ricardo Martins
    • Ricardo Pinheiro
    • Rodrigo Maciel
    • Silney Lopes
    • Vagner Matos
  • Checkout
    • Purchase Confirmation
    • Purchase History
    • Transaction Failed
  • Eventos
  • Eventos
  • Fale Conosco
  • Galeria de Vídeo
  • Grupos do Telegram
  • Lista VIP
  • Nossa Equipe
  • Receba mais informações
  • ShowCasts
  • Sobre
  • Teste a sua velocidade
  • Video Gallery
  • Video Grid Gallery

Archives

  • junho 2018
  • maio 2018
  • fevereiro 2018
  • outubro 2017
  • setembro 2017
  • agosto 2017
  • fevereiro 2017
  • janeiro 2017
  • dezembro 2016
  • julho 2016
  • junho 2016
  • maio 2016
  • abril 2016
  • março 2016
  • fevereiro 2016
  • janeiro 2016
  • dezembro 2015
  • novembro 2015
  • outubro 2015
  • setembro 2015
  • agosto 2015
  • julho 2015
  • junho 2015
  • maio 2015
  • abril 2015
  • março 2015
  • fevereiro 2015
  • janeiro 2015
  • dezembro 2014
  • novembro 2014
  • outubro 2014
  • setembro 2014
  • agosto 2014
  • julho 2014
  • junho 2014
  • maio 2014
  • abril 2014
  • janeiro 2014
  • dezembro 2013
  • outubro 2013
  • setembro 2013
  • julho 2013
  • junho 2013
  • maio 2013
  • abril 2013
  • março 2013
  • fevereiro 2013
  • janeiro 2013
  • setembro 2012
  • agosto 2012
  • julho 2012
  • abril 2011
  • março 2011
  • fevereiro 2011

Categorias

  • AWS (7)
  • BSD (3)
  • Cloud Computing (11)
  • Dev (13)
  • DevOps (3)
  • Entrevistas (1)
  • Gestão (8)
  • GNU/Linux (135)
  • IoT (4)
  • Microsoft (86)
    • Hyper-V (9)
    • Office 365 (3)
    • Skype For Business (1)
    • SQL Server (1)
    • System Center (2)
    • Windows Server (2)
  • Monitoração (4)
  • Rede (37)
  • redes (10)
  • Segurança (23)
  • Sem categoria (25)
  • SharePoint (4)
  • ShowCasts (13)
  • Vagas (13)
  • VMware (1)
  • Windows (96)

WordPress

  • Acessar
  • WordPress

Inscrever

  • Posts (RSS)
  • Comentários (RSS)
© 2012 Mundo TI Brasil
 

Carregando comentários...