Fantoche - Visão geral
Puppet é uma ferramenta de gerenciamento de configuração desenvolvida pelo Puppet Labs para automatizar o gerenciamento e configuração da infraestrutura. O Puppet é uma ferramenta muito poderosa que auxilia no conceito de Infraestrutura como código. Esta ferramenta é escrita em linguagem Ruby DSL que auxilia na conversão de uma infraestrutura completa em formato de código, que pode ser facilmente gerenciado e configurado.
O Puppet segue o modelo cliente-servidor, onde uma máquina em qualquer cluster atua como o servidor, conhecido como puppet master e a outra atua como um cliente conhecido como escravo nos nós. O Puppet tem a capacidade de gerenciar qualquer sistema do zero, desde a configuração inicial até o fim da vida útil de qualquer máquina em particular.
Características do sistema de fantoches
A seguir estão os recursos mais importantes do Puppet.
Idempotência
O Puppet oferece suporte à idempotência, o que o torna único. Semelhante ao Chef, no Puppet, é possível executar com segurança o mesmo conjunto de configuração várias vezes na mesma máquina. Neste fluxo, o Puppet verifica o status atual da máquina de destino e só fará alterações quando houver alguma alteração específica na configuração.
Idempotency ajuda no gerenciamento de qualquer máquina em particular ao longo de seu ciclo de vida, desde a criação da máquina, mudanças de configuração na máquina, até o fim da vida. O recurso Puppet Idempotency é muito útil para manter a máquina atualizada por anos, em vez de reconstruí-la várias vezes, quando houver qualquer alteração na configuração.
Plataforma cruzada
No Puppet, com a ajuda de Resource Abstraction Layer (RAL) que usa recursos do Puppet, pode-se direcionar a configuração especificada do sistema sem se preocupar com os detalhes de implementação e como o comando de configuração funcionará dentro do sistema, que são definidos na configuração subjacente Arquivo.
Fantoche - Fluxo de Trabalho
O Puppet usa o seguinte fluxo de trabalho para aplicar a configuração no sistema.
No Puppet, a primeira coisa que o mestre do Puppet faz é coletar os detalhes da máquina-alvo. Usando o fator que está presente em todos os nós do Puppet (semelhante ao Ohai no Chef), ele obtém todos os detalhes de configuração no nível da máquina. Esses detalhes são coletados e enviados de volta ao mestre das marionetes.
Em seguida, o fantoche mestre compara a configuração recuperada com os detalhes de configuração definidos e, com a configuração definida, cria um catálogo e o envia aos agentes do Puppet de destino.
O agente Puppet então aplica essas configurações para colocar o sistema em um estado desejado.
Finalmente, uma vez que se tenha o nó de destino em um estado desejado, ele envia um relatório de volta para o Puppet master, que ajuda o Puppet master a entender onde está o estado atual do sistema, conforme definido no catálogo.
Fantoche - Componentes-chave
A seguir estão os principais componentes do Puppet.
Recursos de fantoches
Os recursos do Puppet são os principais componentes para modelar qualquer máquina em particular. Esses recursos têm seu próprio modelo de implementação. O Puppet usa o mesmo modelo para obter qualquer recurso específico no estado desejado.
Provedores
Os provedores são basicamente realizadores de qualquer recurso específico usado no Puppet. Por exemplo, o tipo de pacote 'apt-get' e 'yum' são válidos para gerenciamento de pacotes. Às vezes, mais de um provedor estaria disponível em uma plataforma específica. Embora cada plataforma sempre tenha um provedor padrão.
Manifesto
Manifest é uma coleção de recursos que são acoplados dentro da função ou classes para configurar qualquer sistema de destino. Eles contêm um conjunto de código Ruby para configurar um sistema.
Módulos
Módulo é o bloco de construção chave do Puppet, que pode ser definido como uma coleção de recursos, arquivos, modelos, etc. Eles podem ser facilmente distribuídos entre diferentes tipos de sistema operacional, sendo definido que são do mesmo tipo. Como eles podem ser facilmente distribuídos, um módulo pode ser usado várias vezes com a mesma configuração.
Modelos
Os modelos usam expressões Ruby para definir o conteúdo personalizado e a entrada de variável. Eles são usados para desenvolver conteúdo personalizado. Os modelos são definidos em manifestos e copiados para um local no sistema. Por exemplo, se alguém deseja definir httpd com uma porta personalizável, isso pode ser feito usando a seguinte expressão.
Listen <% = @httpd_port %>
A variável httpd_port neste caso é definida no manifesto que faz referência a este modelo.
Arquivos estáticos
Os arquivos estáticos podem ser definidos como um arquivo geral que às vezes é necessário para realizar tarefas específicas. Eles podem ser simplesmente copiados de um local para outro usando o Puppet. Todos os arquivos estáticos estão localizados dentro do diretório de arquivos de qualquer módulo. Qualquer manipulação do arquivo em um manifesto é feita usando o recurso de arquivo.