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

Introdução

À medida que as empresas adotam estratégias de transformação digital para explorar novas fontes de receita ou simplesmente se manter competitivas, um dos principais fatores é a necessidade de agilidade — ou seja, a capacidade de oferecer rapidamente experiências realmente excelentes aos clientes. Ao adotarem metodologias DevOps, as organizações constatam que as arquiteturas de rede atuais são um fator limitante. A arquitetura de rede tradicional é estática, suscetí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 aplicações, mas também os serviços de rede, como DNS e balanceamento de carga, como parte de um pipeline ampliado de Integração/Desenvolvimento Contínuos (CI/CD).

Por meio da automação de rede, as organizações podem alcançar maior agilidade, o que possibilita uma rede mais dinâmica e confiável, maior eficiência operacional, redução do tempo de implantação e implantações de aplicações mais consistentes.

A programabilidade da F5 aumenta a produtividade das equipes 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 aplicações (ADCs) F5® BIG-IP®, proporcionando agilidade e extensibilidade à malha de serviços de rede de aplicações. Tanto as edições físicas quanto as virtuais dos ADCs BIG-IP contam com planos de gerenciamento, controle e dados flexíveis e programáveis:

Plano de gerenciamento

  • F5 iControl®: utiliza SOAP/XML/REST para garantir a comunicação aberta entre sistemas distintos e automatizar as funcionalidades do BIG-IP. A gem F5-iControl também é compatível, permitindo que você se conecte a um dispositivo F5 por meio de seus serviços web.
  • F5 iApps®: Conjuntos de funcionalidades baseados em modelos ajudam a automatizar a configuração e a implantação de aplicações em dispositivos F5.

Plano de Controle

  • F5 iCall™: essa estrutura de scripts baseada em Tcl permite executar comandos TMSH (interface de linha de comando do TMOS) juntamente com os comandos Tcl esperados para controlar 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ável, o iRules permite inspecionar, analisar, modificar, rotear, redirecionar ou manipular 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 redes ajuda as operações a responder, sob demanda, a eventos ou oportunidades operacionais e de negócios. O portfólio de produtos da F5 que oferece programabilidade de redes permite que as organizações automatizem e orquestrem com eficiência.

A solução conjunta da F5 e da Puppet

A F5 e a Puppet firmaram uma parceria para atender à necessidade de agilidade das empresas modernas, oferecendo suporte à integração contínua e à implantação contínua (CI/CD) por meio de uma solução abrangente. A Puppet oferece uma ferramenta de gerenciamento de configuração com suporte comercial, o Puppet Enterprise, que proporciona 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 disponibilizar aplicações de forma mais integrada.

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

Uma infraestrutura típica do Puppet tem agentes de software instalados em cada sistema gerenciado. Esses agentes enviam periodicamente ao servidor mestre do Puppet diversas informações sobre o sistema, chamadas de “facts”. Por sua vez, o mestre do Puppet usa os facts recebidos em conjunto com um manifesto — um programa do Puppet composto por código Puppet — para compilar um catálogo que define a configuração final e, em seguida, envia esse catálogo de volta ao agente. O agente pode então aplicar o estado do sistema conforme definido pelo catálogo.

Ao contrário do que ocorre em um servidor, no qual o agente de software é executado diretamente no nó, a infraestrutura do Puppet permite configurar um proxy que executa o agente para um dispositivo BIG-IP. Assim, você pode gerenciar o dispositivo BIG-IP com o Puppet e aproveitar os benefícios oferecidos pela solução. O agente do Puppet pode residir em um servidor separado do Puppet master, ou ambos podem ser executados no mesmo servidor.

Os arquivos da linguagem Puppet são chamados de manifestos e usam a extensão de arquivo .pp . O núcleo da linguagem Puppet consiste na declaração de recursos. Todas as outras partes da linguagem existem para proporcionar flexibilidade e praticidade à forma como os recursos são declarados. O mestre do Puppet sempre usa o manifesto principal definido pelo ambiente do nó atual, no qual é possível descrever recursos de forma declarativa.

O fluxo de dados da solução conjunta da F5 e do 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 método e, em seguida, as encaminha ao mestre Puppet como fatos.
  2. O mestre do Puppet compila um catálogo e o retorna ao agente ou proxy.
  3. O proxy do Puppet converte o catálogo recebido do mestre do Puppet em um trecho de código da gem iControl para criar a configuração final no dispositivo BIG-IP.
  4. Os arquivos da gem iControl são usados para converter os parâmetros de configuração do nó em mensagens do iControl, a fim de aplicar o estado descrito por meio de APIs.
Figura 1: A solução conjunta da F5 e da Puppet.

Dois recursos essenciais para essa implementação conjunta são a API iControl e o Puppet Network Device Management. As APIs iControl da F5 possibilitam a comunicação entre o proxy do 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 iControl da F5, você pode implantar o módulo F5 do Puppet e gerenciar dispositivos BIG-IP com o Puppet. Os módulos F5 do Puppet oferecem recursos para gerenciar objetos do BIG-IP, incluindo a implantação e o gerenciamento de servidores virtuais, bem como a configuração e o gerenciamento de pools e seus membros. O Puppet usa os módulos F5 para localizar 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 da F5 e da Puppet ajuda você a:

  • Gerencie a infraestrutura de computação e de rede com a mesma ferramenta para obter maior eficiência.
  • Elimine transferências demoradas entre as equipes de sistemas e de redes.
  • Garanta a consistência da configuração dos 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ços, com a capacidade de definir a configuração uma única vez e aplicá-la a vários sistemas em grande escala.
  • Permita a reprodução rápida. Quando chegar a hora de promover um aplicativo da pré-produção para a produção, basta executar o Puppet, e ele configurará tudo da mesma forma que fez nos ambientes de teste.
  • Aumente a velocidade de entrega de aplicativos.

Os módulos Puppet F5 podem criar e configurar objetos BIG-IP — incluindo nós de servidor, pools e servidores virtuais — necessários para uma implantação típica de aplicações. Quando se trata da 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, self-IPs e domínios de rota.

Caso de uso: implantação de aplicação HTTP na plataforma BIG-IP

Para configurar uma aplicação HTTP típica em um dispositivo BIG-IP, é necessário configurar nós, monitores e perfis, implantar endereços IP virtuais, entre outras tarefas. Isso pode parecer viável sem automação em um único dispositivo BIG-IP, mas configurar vários dispositivos F5, possivelmente distribuídos por diversos data centers, para disponibilizar aplicações corporativas de grande porte é uma tarefa complexa, demorada e sujeita a erros. Com o manifesto declarativo do Puppet, baseado em modelos, as organizações podem gerenciar e automatizar a implantação de aplicações em vários dispositivos BIG-IP distribuídos por diferentes data centers.

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

Figura 2: Implantação da solução conjunta da F5 e do Puppet.

Criar um arquivo device.conf

Antes de 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]
type f5
url https://admin:admin@10.192.74.111

No exemplo acima, admin:admin@10.192.74.111 refere-se às credenciais de 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, insira a configuração na instrução de classe ou na declaração de nó relevante no arquivo site.pp, no manifesto de nó <devicecertname>.pp ou em algum arquivo de manifesto profiles::<profile_name>. Veja a seguir um exemplo de arquivo de manifesto do Puppet (site.pp) para configurar uma aplicação HTTP na plataforma BIG-IP:

node bigip1 {
f5_node { '/Common/web_server_1':
ensure => 'present',
address => '10.1.20.11',
description => 'Web Server Node 1',
availability_requirement => 'all',
health_monitors => ['/Common/icmp'],
}->

f5_node { '/Common/web_server_2':
ensure => 'present',
address => '10.1.20.12',
description => 'Web Server Node 2',
availability_requirement => 'all',
health_monitors => ['/Common/icmp'],
}->

f5_node { '/Common/web_server_3':
ensure => 'present',
address => '10.1.20.13',
description => 'Web Server Node 3',
availability_requirement => 'all',
health_monitors => ['/Common/icmp'],
}->

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

f5_virtualserver { '/Common/http_vs':
ensure => 'present',
provider => 'standard',
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 configurar 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 menor número possível de parâmetros e um monitor de integridade que envia pings diretamente a cada servidor para garantir que ele continue respondendo.
  2. Em seguida, configure o pool de servidores. O módulo “f5_pool” cria um pool chamado web_pool e também adiciona os nós criados acima como membros do pool.
  3. O módulo “f5_virtualserver” cria um servidor virtual http-vs com o perfil http e o web_pool criado acima.

Executar o puppet device

Antes de executar puppet device (comando do Puppet Network Device), não há servidores virtuais, pools ou nós configurados no dispositivo BIG-IP. A execução do 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.

Como mostrado abaixo, todas as tarefas foram concluídas com sucesso, sem nenhuma falha.

$ sudo puppet device -v --user=root –trace
Informação: iniciando a aplicação da configuração ao bigip1 em https://10.192.74.111:443
Informação: recuperando pluginfacts
Informação: recuperando o plugin
Informação: armazenando o catálogo em cache para bigip1
Informação: 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
Informação: Node[bigip1]: cancelando o agendamento de todos os eventos em Node[bigip1]
Aviso: catálogo aplicado em 0,50 segundos

O Puppet agora criou um novo servidor virtual totalmente configurado (Figura 3). Esse servidor distribui a carga de aplicações HTTP entre os membros de um pool recém-criado (Figura 4). O pool inclui três servidores web recém-criados (Figura 5).

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

Todos os módulos F5 do Puppet 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.

Informação: iniciando a aplicação da configuração ao bigip1 em https://10.192.74.111:443
Informação: recuperando pluginfacts
Informação: recuperando plugin
Informação: armazenando o catálogo em cache para bigip1
Informação: aplicando a versão de configuração '1498522983'
Aviso: catálogo aplicado em 1,51 segundos

Conclusão

A automação é um componente essencial de DevOps e CI/CD e, muitas vezes, começa com o gerenciamento de configurações. A solução conjunta da F5 e da Puppet permite que as equipes de operações implantem, automatizem e gerenciem a configuração de toda a pilha de infraestrutura de aplicações. Isso permite que os desenvolvedores de aplicações aumentem ou reduzam os recursos de infraestrutura de forma elástica, automatizem testes de aplicações e reduzam os prazos de desenvolvimento. Como resultado, as organizações podem alcançar níveis sem precedentes de agilidade e extensibilidade.

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

PUBLICADO EM 05 DE OUTUBRO DE 2017