À 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 é 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:
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 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.
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.
Esta solução conjunta F5 e Puppet ajuda você a:
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.
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.
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>.
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:
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).
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
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