SaltStack - Visão geral
Neste capítulo, aprenderemos os fundamentos do SaltStack. Os recursos de execução remota do SaltStack permitem que os administradores executem comandos em várias máquinas em paralelo com um sistema de direcionamento flexível. O gerenciamento da configuração do Salt estabelece um modelo mestre-subordinado para alinhar os componentes da infraestrutura de forma rápida, fácil, flexível e segura com uma determinada política.
O que é SaltStack?
Salt é uma estrutura de automação muito poderosa. A arquitetura do Salt é baseada na ideia de executar comandos remotamente. Toda a rede é projetada em torno de algum aspecto da execução remota. Isso pode ser tão simples quanto pedir umRemote Web Serverpara exibir uma página da Web estática ou tão complexo quanto usar uma sessão de shell para emitir comandos interativamente em um servidor remoto. O sal é um exemplo de um dos tipos mais complexos de execução remota.
O Salt foi projetado para permitir que os usuários direcionem explicitamente e emitam comandos para várias máquinas diretamente. O sal é baseado na ideia de um Mestre, que controla um ou maisMinions. Os comandos são normalmente emitidos do Mestre para um grupo alvo de Minions, que então executam as tarefas especificadas nos comandos e, em seguida, devolvem os dados resultantes ao Mestre. As comunicações entre um mestre e lacaios ocorrem durante oZeroMQ message bus.
Os módulos SaltStack comunicam-se com os sistemas operacionais minion suportados. oSalt Masteré executado no Linux por padrão, mas qualquer sistema operacional pode ser um lacaio e, atualmente, as variantes do Windows, VMware vSphere e BSD Unix são bem suportadas. O Mestre de Sal e os lacaios usam chaves para se comunicar. Quando um lacaio se conecta a um mestre pela primeira vez, ele armazena automaticamente as chaves no mestre. SaltStack também ofereceSalt SSH, que fornece um gerenciamento de sistemas “sem agente”.
Necessidade de SaltStack
O SaltStack foi desenvolvido para velocidade e escala. É por isso que é usado para gerenciar grandes infraestruturas com dezenas de milhares de servidores no LinkedIn, WikiMedia e Google.
Imagine que você tem vários servidores e deseja fazer coisas com eles. Você precisaria fazer o login em cada um e fazer essas coisas um de cada vez em cada um e, em seguida, você pode querer fazer coisas complicadas como instalar software e, em seguida, configurar esse software com base em alguns critérios específicos.
Vamos supor que você tenha dez ou talvez até 100 servidores. Imagine fazer login um por vez em cada servidor individualmente, emitir os mesmos comandos nessas 100 máquinas e, em seguida, editar os arquivos de configuração em todas as 100 máquinas se torna uma tarefa muito tediosa. Para superar esses problemas, você adoraria atualizar todos os seus servidores de uma vez, apenas digitando um único comando. O SaltStack oferece exatamente a solução para todos esses problemas.
Recursos do SaltStack
SaltStack é um software de gerenciamento de configuração de código aberto e mecanismo de execução remota. Salt é uma ferramenta de linha de comando. Embora escrito em Python, o gerenciamento de configuração do SaltStack é agnóstico de linguagem e simples. A plataforma Salt usa o modelo push para executar comandos por meio do protocolo SSH. O sistema de configuração padrão éYAML e Jinja templates. O sal está competindo principalmente comPuppet, Chef e Ansible.
O Salt oferece muitos recursos quando comparado a outras ferramentas concorrentes. Alguns desses recursos importantes estão listados abaixo.
Fault tolerance- Os salt minions podem se conectar a vários mestres ao mesmo tempo, configurando o parâmetro de configuração do mestre como uma lista YAML de todos os mestres disponíveis. Qualquer mestre pode direcionar comandos para a infraestrutura do Salt.
Flexible- Toda a abordagem de gestão do Salt é muito flexível. Ele pode ser implementado para seguir os modelos de gerenciamento de sistemas mais populares, como Agente e Servidor, Apenas Agente, Apenas Servidor ou todos os anteriores no mesmo ambiente.
Scalable Configuration Management - SaltStack é projetado para lidar com dez mil lacaios por mestre.
Parallel Execution model - O Salt pode permitir que comandos executem sistemas remotos de maneira paralela.
Python API - O Salt fornece uma interface de programação simples e foi projetado para ser modular e facilmente extensível, para torná-lo fácil de ser moldado em diversas aplicações.
Easy to Setup - O Salt é fácil de configurar e fornece uma única arquitetura de execução remota que pode gerenciar os diversos requisitos de qualquer número de servidores.
Language Agnostic - Arquivos de configuração de estado de sal, mecanismo de modelagem ou tipo de arquivo suporta qualquer tipo de linguagem.
Benefícios do SaltStack
Por ser simples e também um sistema rico em recursos, o Salt oferece muitos benefícios e eles podem ser resumidos conforme abaixo -
Robust - O Salt é uma estrutura de gerenciamento de configuração poderosa e robusta e funciona em dezenas de milhares de sistemas.
Authentication - Salt gerencia pares de chaves SSH simples para autenticação.
Secure - Salt gerencia dados seguros usando um protocolo criptografado.
Fast - Salt é um barramento de comunicação muito rápido e leve para fornecer a base para um mecanismo de execução remota.
Virtual Machine Automation - O recurso Salt Virt Cloud Controller é usado para automação.
Infrastructure as data, not code - O Salt fornece uma implantação simples, gerenciamento de configuração orientado por modelo e estrutura de execução de comando.
Introdução ao ZeroMQ
Salt é baseado no ZeroMQbiblioteca e é uma biblioteca de rede embutida. É uma biblioteca de mensagens leve e rápida. A implementação básica está emC/C++ e implementações nativas para vários idiomas, incluindo Java e .Net está disponível.
ZeroMQ é um processamento de mensagens peer-peer sem corretor. ZeroMQ permite que você projete um sistema de comunicação complexo facilmente.
ZeroMQ vem com os seguintes cinco padrões básicos -
Synchronous Request/Response - Usado para enviar um pedido e receber respostas subsequentes para cada um enviado.
Asynchronous Request/Response- O solicitante inicia a conversa enviando uma mensagem de solicitação e aguarda uma mensagem de resposta. O provedor espera pelas mensagens de solicitação de entrada e responde com as mensagens de resposta.
Publish/Subscribe - Usado para distribuir dados de um único processo (por exemplo, editor) para vários destinatários (por exemplo, assinantes).
Push/Pull - Usado para distribuir dados para nós conectados.
Exclusive Pair - Usado para conectar dois pares, formando um par.
ZeroMQ é uma ferramenta de rede altamente flexível para troca de mensagens entre clusters, nuvem e outros ambientes de vários sistemas. ZeroMQ é odefault transport library apresentado no SaltStack.