Orquestrando multicloud com Infrastructure as Code

Embora a maioria já saiba que uma nuvem, seja ela pública ou privada, não consiste em apenas um simples painel de controle de infraestrutura, muitos profissionais e usuários de cloud ainda não exploraram as APIs e continuam orquestrando 100% dos serviços através das interfaces gráficas disponíveis.

São inúmeras as vantagens em tratar orquestração de IaaS como código, vale ressaltar algumas, como:

  • Versione: Através de um software de controle de versão como Git ou Subversion, você terá um controle efetivo das mudanças que vão sendo realizadas no seus ambientes.
  • Documente: Se a infraestrutura é definida por código ela já será automaticamente documentada.
  • Ganhe agilidade: Maior velocidade para deploy de ambientes complexos.
  • Evite tarefas repetitivas: Reaproveitamento de código evita que você refaça tarefas toda vez que necessitar fazer o deploy de um novo ambiente.

Existem diversas ferramentas e abordagens que vão possibilitar orquestrar ambientes em nuvem utilizando código. Abaixo cito 3 abordagens diferentes, escolha a que faz, mas sentido para sua necessidade.

  • IaaS Management tools” nativas de cada cloud provider

As principais tecnologias e provedores de nuvem fornecem serviços nativos para a orquestração de ambientes através de código, estes serviços possuem abordagens semelhantes mas utilizam padrões específicos de acordo com a tecnologia ou provider, seguem exemplos abaixo:

Com estes serviços você poderá escrever um template em formato de texto normalmente JSON ou YAML variando de acordo com o cloud provider. Neste template você basicamente irá descrever os parâmetros e os recursos que serão criados, parâmetros é aquilo que faz sentido ser alterado no momento do deploy, exemplos são, nome, flavors e imagens de S.O. utilizado nas instâncias ou senhas de banco de dados, chaves de segurança e etc. Os recursos são efetivamente os serviços de IaaS que serão criados como instâncias, volumes, IPs, VIPs de LBaaS e etc.
Com estes serviços você não só poderá criar e configurar recursos de IaaS, mas pode utilizá-los para disparar scripts de gestão de configuração para realizar a instalação de serviços e deploy de aplicações de forma automática.

Saiba mais em:

OpenStack – Heat 

AWS – CloudFormation

Google GCE – Cloud Deployment Manager

Azure – ResorceManager – ARM

2 – Terraform – Ferramenta de IAC agnóstica ao Cloud Provider
Terraform é uma ferramenta Open Source mantida pela HashiCorp com o foco em IAC – Infrastructure as Code. O Terraform possui compatibilidade com as principais tecnologias de nuvens existentes no mercado e com ele você poderá definir, versionar, planejar e realizar o deploy de IaaS nas principais nuvens.

 

Ele possibilita através de arquivos texto nos formatos TF (Terraform Format) ou JSON que sejam definidos múltiplos ou um único provider (ex: Openstack, AWS, Google e etc), parametrizar e criar variáveis, criar e configurar os recursos de IaaS além de possuir módulos para a integração com as principais ferramentas de gerenciamento de configuração como Ansible, Puppet, Chef, Salt e etc. Permitindo que seja feito todo o ciclo de orquestração de forma automatizada e via código.

Saiba mais em Terraform

 

3 – Ferramentas de gestão de configuração

As principais ferramentas de gestão de configuração disponíveis no mercado além de cuidar do provisionamento de instâncias, configuração de serviços e deploy de aplicações possuem módulos nativos para a criação e orquestração de serviços de IaaS dos principais vendors e tecnologias de nuvem. Abaixo algumas destas ferramentas que podem ser utilizadas também para a orquestração multicloud e de IaaS.

Saiba mais em:

Ansible

Puppet

Chef

Salt Stack

A abordagem que você deve escolher depende de fatores como, quantidade de nuvens a serem orquestradas, conhecimento e organização da sua equipe técnica e objetivos a serem alcançados em longo e curto prazo, a resposta para algumas das perguntas abaixo podem ajudar na escolha da abordagem que mais faz sentido para você, exemplos:

ORQUESTRO APENAS UMA OU POUCAS NUVENS?
ORQUESTRO SERVIÇOS MUITO ESPECÍFICOS DE UM CLOUD PROVIDER?

Faz mais sentido utilizar a abordagem 1, pois as ferramentas nativas dos Cloud Providers embora necessitem que você escreva um template exclusivo para cada nuvem, possui maior integração e compatibilidade com serviços específicos e mais novos do que as outras ferramentas agnósticas.

 

FAZ SENTIDO DESACOPLAR A ORQUESTRAÇÃO DE IAAS DO GER. DE SERVIÇOS? UTILIZO FERRAMENTAS DESENVOLVIDAS INTERNAMENTE PARA PROVISIONAMENTO?

A abordagem 2, Terraform ou outra ferramenta agnóstica de IAC deve ser a escolha ideal por desacoplar e fornecer mais recursos específicos focados na orquestração de IaaS.
TEMOS CONHECIMENTO EM FERRAMENTAS DE GER. DE SERVIÇO E A METODOLOGIA DEVOPS JÁ É REALIDADE NA MINHA EMPRESA?

Se já tem know how e equipe capacitada em alguma ferramenta de gerenciamento de serviço, deve fazer sentido ir com a abordagem 3. Apenas fique atento a estruturar bem o código desacoplando de forma inteligente as diferentes camadas como orquestração de IaaS, configuração de S.O. e deploy de aplicações, assim você irá conseguir reaproveitar código de uma forma eficiente.

 

Artigo elaborado por Renato Armani, pioneiro na evangelização do OpenStack no Brasil e membro ativo da comunidade brasileira e mundial.

 

Gostou da solução? Nós podemos ajudar!

Conheça nossos conteúdos gratuitos, direcionados aos assuntos de sua preferência!

Enviar

Receba nosso conteúdo

Gostaria de receber de forma gratuita mais conteúdos sobre este ou outros assuntos? Preencha o formulário abaixo e receba nosso conteúdo gratuito!

Parabéns!

Você receberá nosso conteúdo em breve!

Atenção

Tivemos um problema com seu formulário, tente novamente.