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.
gui-less

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:

IAAS-Man

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.

terraform

 

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.

Gerenciamento-Configuracao

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.

Até o próximo o post!

 

 

 

Renato Armani

Pioneiro na evangelização do OpenStack no Brasil e membro ativo da comunidade brasileira e mundial, foi palestrante do OpenStack Summit, USA.