Automatizando implantações de aplicativos com F5 BIG-IP e Puppet

INTRODUÇÃO

À medida que as empresas buscam estratégias de transformação digital para se aventurar em novos fluxos de receita ou simplesmente permanecerem competitivas, um dos principais motivadores é a necessidade de velocidade — ou a capacidade de oferecer experiências realmente excelentes ao cliente rapidamente. À medida que as organizações adotam metodologias DevOps, elas descobrem que as arquiteturas de rede atuais são um fator limitante. A arquitetura de rede tradicional é estática, vulnerável a erros humanos e exige um investimento operacional significativo para ser gerenciada. É fundamental automatizar não apenas a infraestrutura de rede que dá suporte às implantações de aplicativos, mas também os serviços de rede, como DNS e balanceamento de carga, como parte de um pipeline estendido de Integração/Desenvolvimento Contínuo (CI/CD).

Por meio da automação de rede, as organizações podem obter maior agilidade, o que permite uma rede mais dinâmica e confiável, maior eficiência operacional, menor tempo de implantação e implantações de aplicativos mais consistentes.

A programabilidade do F5 permite produtividade de TI e DevOps

A programabilidade é um fator essencial para a automação operacional. Ao longo dos anos, a F5 vem adotando esse conceito e oferece suporte à programabilidade em todos os controladores de entrega de aplicativos (ADCs) F5® BIG-IP®, permitindo agilidade e extensibilidade na estrutura de serviços de rede de aplicativos. As edições física e virtual dos ADCs BIG-IP apresentam planos de gerenciamento, controle e dados flexíveis e programáveis:

Plano de Gestão
  • F5 iControl®: Utiliza SOAP/XML/REST para garantir comunicações abertas entre sistemas diferentes e automatizar a funcionalidade BIG-IP. A gema F5-iControl também é suportada para permitir que você se conecte a um dispositivo F5 por meio de seus serviços web.
  • F5 iApps®: Conjuntos de funcionalidades modelados ajudam a automatizar a configuração e a implantação de aplicativos em dispositivos F5.
Plano de controle
  • F5 iCall™: Esta estrutura de script baseada em Tcl permite que você execute comandos TMSH (interface de linha de comando TMOS Shell) junto com os comandos Tcl esperados, para direcionar a configuração de um dispositivo F5 em execução.
Plano de dados
  • F5 iRules®: Uma linguagem de script baseada em Tcl altamente personalizável e programática, o iRules permite que você inspecione, analise, modifique, roteie, redirecione ou manipule o tráfego em tempo real. A próxima evolução, iRules Language eXtensions (LX), habilita recursos do node.js na plataforma BIG-IP (v12.1).

Uma abordagem abrangente à programabilidade de rede ajuda as operações a reagir sob demanda a eventos ou oportunidades operacionais e comerciais. O portfólio de produtos F5 que oferece programabilidade de rede equipa organizações para automatizar e orquestrar com eficiência.

A solução F5 e Puppet Joint

A F5 e a Puppet fizeram uma parceria para atender à necessidade de agilidade dos negócios modernos em suporte à integração e implantação contínuas (CI/CD) por meio de uma solução abrangente. A Puppet oferece uma ferramenta de gerenciamento de configuração com suporte comercial, a Puppet Enterprise, que fornece uma abordagem unificada e definida por software para automatizar o gerenciamento de recursos de computação, rede e armazenamento, além de ajudar as organizações a entregar aplicativos de maneira mais integrada.

Com sua abordagem declarativa e baseada em modelos para automação de TI, o Puppet Enterprise permite que você execute funções desde a automação de tarefas simples e repetitivas até a implantação de nuvens públicas, privadas e híbridas em larga escala. A capacidade de modelar, testar e, em seguida, implantar alterações de configuração nesses ambientes de nuvem garante um uso eficiente dos seus recursos de infraestrutura; com a extensibilidade do Puppet por meio de módulos, as organizações podem desenvolver a estrutura existente para oferecer suporte aos seus dispositivos BIG-IP.

Uma infraestrutura típica do Puppet tem agentes de software instalados em cada sistema gerenciado. Esses agentes enviam periodicamente várias informações chamadas “fatos” sobre o sistema para um servidor mestre Puppet. O mestre do Puppet, por sua vez, usa os fatos recebidos junto com um manifesto — um programa Puppet composto de código Puppet para compilar um catálogo que define a configuração finalizada — antes de enviar o catálogo de volta ao agente. O agente pode então impor o estado do sistema conforme definido pelo catálogo. 

Diferentemente de um caso de servidor em que o agente de software é executado diretamente no nó, a infraestrutura do Puppet permite que você configure um proxy que executa o agente para um dispositivo BIG-IP. Agora você pode ter o dispositivo BIG-IP sob gerenciamento do Puppet e aproveitar os benefícios que a solução tem a oferecer. O agente Puppet pode residir em um servidor separado do mestre Puppet ou podem ser executados no mesmo servidor.

Os arquivos de linguagem Puppet são chamados de manifestos e são nomeados com a extensão de arquivo .pp . O núcleo da linguagem Puppet é declarar recursos. Todas as outras partes da linguagem existem para adicionar flexibilidade e conveniência à maneira como os recursos são declarados. O Puppet master sempre usa o manifesto principal definido pelo ambiente do nó atual, onde você pode descrever recursos de forma declarativa. 

O fluxo de dados para a solução conjunta F5 e Puppet é ilustrado na Figura 1.

  1. O proxy que executa o agente Puppet recupera periodicamente informações sobre o dispositivo BIG-IP por meio de acesso remoto ao shell, APIs ou algum outro meio e, em seguida, as repassa ao mestre Puppet como fatos.
  2. O Puppet Master compila um catálogo e o retorna ao agente ou proxy.
  3. O proxy Puppet converte o catálogo recebido do mestre Puppet em um trecho de código gem do iControl para criar a configuração final no dispositivo BIG-IP.
  4. Os arquivos gem do iControl são usados para traduzir parâmetros de configuração do nó em mensagens do iControl, para impor o estado descrito por meio de APIs.
A solução conjunta F5 e Puppet.
Figura 1: A solução conjunta F5 e Puppet.

Dois recursos essenciais para essa implementação conjunta são a API iControl e o Puppet Network Device Management. As APIs do F5 iControl fornecem a comunicação entre o proxy Puppet e os dispositivos F5 BIG-IP, enquanto o Puppet Network Device Management ajuda as organizações a configurar dispositivos de rede. Usando o Puppet Network Device e a API F5 iControl, você pode implantar o módulo Puppet F5 e levar o gerenciamento do Puppet para dispositivos BIG-IP. Os módulos Puppet F5 oferecem recursos para gerenciar objetos BIG-IP, incluindo implantação e gerenciamento de servidores virtuais, bem como configuração e gerenciamento de pools e membros de pool. O Puppet usa módulos F5 para encontrar os recursos definidos para dispositivos BIG-IP e carrega automaticamente qualquer classe personalizada ou tipo definido armazenado nos módulos F5.

Principais benefícios

Esta solução conjunta F5 e Puppet ajuda você a:

  • Gerencie a infraestrutura de computação e rede com a mesma ferramenta para maior eficiência.
  • Elimine transferências demoradas entre sistemas e equipes de rede.
  • Aplique consistência de configuração aos seus dispositivos BIG-IP (sempre que a configuração se desviar do estado desejado, o Puppet a reverterá automaticamente para o estado configurado).
  • Obtenha escalabilidade e elasticidade de serviço, com a capacidade de escrever a configuração uma vez e aplicá-la a muitos sistemas em escala.
  • Habilitar reprodução rápida. Quando chega a hora de avançar um aplicativo da pré-produção para a produção, basta executar o Puppet, e o Puppet configurará tudo da mesma forma que fez em seus ambientes de teste.
  • Aumente a velocidade de entrega do aplicativo.

Os módulos Puppet F5 podem criar e configurar objetos BIG-IP, incluindo nós de servidor, pools e servidores virtuais, necessários para a implantação típica de aplicativos. Quando se trata de implantação de vários dispositivos BIG-IP, as organizações podem usar os módulos Puppet para automatizar todas as tarefas iniciais de integração do BIG-IP, como licenciamento de dispositivos, configurações de DNS e NTP, VLANs internas e externas, auto-IPs e domínios de rota.

Caso de uso: Implantação de aplicativo HTTP na plataforma BIG-IP

Para configurar um aplicativo HTTP típico em um dispositivo BIG-IP, você deve configurar nós, monitores e perfis; implantar endereços IP virtuais; e muito mais. Isso pode parecer administrável sem automação em um único dispositivo BIG-IP, mas configurar vários dispositivos F5, possivelmente em vários data centers para fornecer grandes aplicativos empresariais é complexo, demorado e sujeito a erros. Com o manifesto Puppet declarativo e baseado em modelo, as organizações podem gerenciar e automatizar a implantação de aplicativos em vários dispositivos BIG-IP em data centers.

Para iniciar a implantação, instale o Puppet master e crie um sistema proxy capaz de executar o agente Puppet. Além disso, você deve instalar todas as dependências, incluindo o iControl gem e o Faraday gem no ambiente Puppet Ruby no host proxy (agente Puppet). A implantação é ilustrada na Figura 2.

Implantação conjunta da solução F5 e Puppet.
Figura 2: Implantação conjunta da solução F5 e Puppet.
Crie um arquivo device.conf

Antes de poder usar o módulo F5, você deve criar um arquivo device.conf no diretório de configuração do Puppet ( /etc/puppet ou /etc/puppetlabs/puppet ) no proxy do Puppet:

[bigip1]
digite f5
url https://admin:admin@10.192.74.111

No exemplo acima, administrador:admin@10.192.74.111 refere-se ao login do Puppet para o dispositivo F5: <NOME DE USUÁRIO>:<SENHA>@<ENDEREÇO IP DO BIGIP>.

Classifique seus nós no Puppet Master

Em seguida, você insere a configuração na declaração de classe ou declaração de nó relevante no seu site.pp, manifesto de nó <devicecertname>.pp ou em algum arquivo de manifesto profiles::<profile_name> . A seguir está um exemplo de arquivo de manifesto do Puppet (site.pp) para configurar um aplicativo HTTP na plataforma BIG-IP:

nó bigip1 {
f5_node { '/Common/web_server_1':
ensure => 'presente',
address => '10.1.20.11',
description => 'Nó do Servidor Web 1',
availability_requirement => 'todos',
health_monitors => ['/Common/icmp'],
}->

f5_node { '/Common/web_server_2':
ensure => 'presente',
address => '10.1.20.12',
description => 'Nó do Servidor Web 2',
availability_requirement => 'todos',
health_monitors => ['/Common/icmp'],
}->

f5_node { '/Common/web_server_3':
ensure => 'presente',
address => '10.1.20.13',
description => 'Nó do Servidor Web 3',
availability_requirement => 'todos',
health_monitors => ['/Common/icmp'],
}->

f5_pool { '/Common/web_pool':
ensure => 'presente',
members => [
{ name => '/Common/web_server_1', port => '80', },
{ name => '/Common/web_server_2', port => '80', },
{ name => '/Common/web_server_3', port => '80', },
],
availability_requirement => 'todos',
health_monitors => ['/Common/http_head_f5'],
}->

f5_virtualserver { '/Common/http_vs':
ensure => 'presente',
provider => 'padrão',
default_pool => '/Common/web_pool',
destination_address => '10.1.10.240',
destination_mask => '255.255.255.255',
http_profile => '/Common/http',
service_port => '80',
protocol => 'tcp',
source => '0.0.0.0/0',
source_address_translation => 'automap'
}

}

Este exemplo apresenta três tarefas:

  1. Primeiro você deve estabelecer seus servidores web. O módulo F5 chamado “f5_node” adiciona três servidores web: web_server_1 , web_server_2 e web_server_3 , cada um com o número mínimo de parâmetros possível e um monitor de integridade que faz ping em cada servidor diretamente para garantir que ele ainda esteja responsivo.
  2. Em seguida, estabeleça o pool de servidores. O módulo “f5_pool” cria um pool chamado web_pool e também adiciona os membros do nó criados acima como membros do pool.
  3. O módulo “f5_virtualserver” cria um servidor virtual http-vs com perfil http e o web_pool criado acima.
Executar dispositivo de marionete

Antes de executar o puppet device (comando para Puppet Network Device), não há servidores virtuais, pools ou nós configurados no dispositivo BIG-IP. Executar o comando puppet device -v --user=root fará com que o nó proxy do dispositivo gere um certificado e aplique suas classificações ao dispositivo F5.

Conforme mostrado abaixo, todas as tarefas foram concluídas com sucesso e sem falhas.

$ sudo puppet device -v --user=root –trace
Info: começando a aplicar a configuração ao bigip1 em https://10.192.74.111:443
Info: Recuperando pluginfacts
Info: Recuperando plugin
Info: Catálogo de cache para bigip1
Info: Aplicando a versão de configuração '1498175426'
Aviso: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_1]/ensure: criado
Aviso: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_2]/ensure: criado
Aviso: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_3]/ensure: criado
Aviso: /Stage[main]/Main/Node[bigip1]/F5_pool[/Common/web_pool]/ensure: criado
Aviso: /Stage[main]/Main/Node[bigip1]/F5_virtualserver[/Common/http_vs]/ensure: criado
Info: Nó[bigip1]: Desagendando todos os eventos no Node[bigip1]
Aviso: Catálogo aplicado em 0,50 segundos

O Puppet agora criou um novo servidor virtual totalmente configurado (Figura 3). Este servidor está balanceando a carga de aplicativos HTTP em um pool recém-criado (Figura 4). O pool inclui três servidores web recém-criados (Figura 5).

Servidor virtual (“http_vs”) criado pelo Puppet.
Figura 3: Servidor virtual (“http_vs”) criado pelo Puppet.
O pool BIG-IP criado pelo Puppet.
Figura 4: O pool BIG-IP criado pelo Puppet.
Servidores web criados pelo Puppet.
Figura 5: O pool BIG-IP criado pelo Puppet.

Todos os módulos Puppet F5 são idempotentes, o que significa que as tarefas são executadas somente se o estado do nó não corresponder ao estado configurado ou desejado. Em outras palavras, se o mesmo manifesto for executado novamente, o Puppet não reconfigurará esses objetos.

Info: começando a aplicar a configuração ao bigip1 em https://10.192.74.111:443
Info: Recuperando pluginfacts
Info: Recuperando plugin
Info: Catálogo de cache para bigip1
Info: Aplicando versão de configuração '1498522983'
Aviso: Catálogo aplicado em 1,51 segundos

Conclusão

A automação é um componente essencial do DevOps e do CI/CD e geralmente começa com o gerenciamento de configuração. A solução conjunta da F5 e da Puppet permite que as equipes de operações implantem, automatizem e gerenciem a configuração de uma pilha inteira de infraestrutura de aplicativos. Isso dá aos desenvolvedores de aplicativos a capacidade de aumentar e diminuir elasticamente os recursos de infraestrutura, automatizar testes de aplicativos e reduzir os prazos de desenvolvimento de aplicativos. Como resultado, as organizações podem atingir níveis sem precedentes de agilidade e extensibilidade.

Para saber mais sobre como a solução conjunta F5 e Puppet pode ajudar sua empresa, visite forge.puppet.com/f5/f5

Publicado em 05 de outubro de 2017
  • Compartilhe no Facebook
  • Compartilhar para X
  • Compartilhe no Linkedin
  • Compartilhar por e-mail
  • Compartilhe via AddThis

Conecte-se com F5

F5 LABS

O que há de mais moderno em inteligência de ameaças a aplicativos.

DEVCENTRAL

A comunidade F5 para fóruns de discussão e artigos de especialistas.

Sala de redação da F5

Notícias, blogs F5 e muito mais.