Como Juju “coexiste” com o Chef, levando o processo de automação “um passo adiante”?

15

Está claro neste post que Juju fica em uma camada diferente da do Chef Server. Juju fica na camada de orquestração ou serviço , enquanto o Chef fica mais na camada individual de servidor ou configuração .

Em uma das principais páginas de Juju da Canonical , ele afirma que Juju foi projetado para "coexistir" com ferramentas como Chef e Puppet, levando o processo "um passo adiante". Vasculhei a Internet nas últimas semanas sobre esse assunto e não consigo encontrar uma boa explicação de como , no entanto, uma ferramenta como Chef coexistirá com Juju.

Portanto, para dividir a questão abrangente no título: (interesse particular em Juju trabalhando em conjunto com um Chef Server)

  • O que é um exemplo de encanto "escrito no Chef"? É simplesmente um encanto escrito no bash que chama o chef-solocomando? Nesse caso, um encanto pode chamar o chef-clientcomando para trabalhar em conjunto com um Chef Server?
  • Onde está a sobreposição entre Juju e Chef? Por exemplo, o encanto do apache2 tem seu lugar config-changedonde faz alterações na configuração que, no mundo Chef, ocorreriam em uma receita aplicando um arquivo de modelo. Se um feitiço Juju funcionasse junto com um livro de receitas do Chef na implantação de um serviço apache2 (cluster), quase pareceria que um feitiço "apache2-chef" teria que ser escrito para que você pudesse separar as tarefas. Nesse caso, o encanto apache2 na Charm Store seria menos que útil.
  • Se você tiver funções de Chef aplicadas a nós (unidades de serviço) implantadas / gerenciadas pelo Juju e o administrador do sistema decidir alterar as regras de firewall para uma função de servidor específica e fizer isso na função de Chef, o Juju substituirá essas alterações?
  • Mais simplesmente, o Juju pode ser um invólucro do Chef Server, como o Ironfan ?

I ver Chef Server como o quão enquanto Juju pode fazer o como , mas também traz o para a mesa. Significando que o estado atual real de serviços e máquinas pode ser consultado e utilizado. Você não pode fazer isso no Chef Server. Meu objetivo é trazer a capacidade de conscientização e orquestração de serviços de Juju para uma infraestrutura gerenciada pelo Chef Server.

Parece quase que todo um conjunto de feitiços teria que ser escrito, onde todas as tarefas / informações de configuração gerenciadas pelo Chef são deixadas de fora.

Eu adoraria ouvir pesadas de alguém da Canonical (como Jorge Castro) e da Opscode (como A. Jacob ou J. Timberman).

Ian D. Rossi
fonte

Respostas:

13

perguntas impressionantes!

o tl; dr

Eu gostaria de detalhar suas perguntas com alguns comentários ... primeiro, aqui estão algumas abordagens gerais para integrar chef e juju:

  • ganchos de encantos podem usar receitas de chef existentes que executam estilo solo em unidades de serviço (recomendado)

  • As unidades de serviço juju se registram em um chef-servidor existente usando um serviço subordinado no nó do chef

Essas idéias ainda não foram implementadas / testadas para o chef, mas os equivalentes de marionetes existem.

a ... resposta não tão curta

Aqui está um pouco mais de um detalhamento de duas abordagens para integrar chef e juju:

Juju como top-dog

Aqui juju dirige o show. O maior valor que a juju fornece é a coordenação de eventos durante o gerenciamento de configuração distribuído ... daí o apelido de "orquestração de serviço". Os encantos Juju consistem em ganchos chamados por juju no "momento certo" ao coordenar o gerenciamento de serviços. A implementação desses ganchos é praticamente aberta. São scripts de shell, código fonte, manifestos de marionetes ou ... receitas de chef.

O Juju divide os bits de qualquer configuração de serviço em:

  • "instalação" .. os bits que são específicos para instalar um serviço específico em um nó

  • "relação" .. os bits de configuração necessários para relacionar esse serviço a algum outro serviço

A chave para usar receitas de chef como implementações de gancho é exatamente isso ... você precisa se certificar de que as receitas que você está usando respeitam essa separação de preocupações. Caso contrário, não há nada que impeça o uso de livros de receitas disponíveis no mercado. Você pode aproveitar as receitas existentes que gastou tempo / dinheiro para desenvolver ... Você só precisa chamar o material específico da relação separadamente do material específico da instalação.

Precisamos de alguns exemplos disso, mas acho que o popular chef b / c tem um ótimo dsl, uma ótima ferramenta de modelagem e é muito mais agradável de usar do que o bash ao escrever configurações complexas. Para uma configuração simples, as receitas do chef são um pouco exageradas, então esse método de integração é praticamente o melhor dos dois mundos ... e tem pernas sérias no futuro.

Chef como top-dog

A idéia aqui é integrar os serviços juju em uma infraestrutura gerenciada por chef-servidor existente. Para fazer isso, você precisa escrever um encanto subordinado no nó do chef. Esse serviço subordinado seria anexado aos serviços juju primários e efetivamente registraria esses serviços como nós (em funções específicas) no servidor chef. Os subs podem ser anexados durante a inicialização do serviço juju ou a qualquer momento mais tarde durante o ciclo de vida de cada serviço.

Estou pensando que isso seria bem parecido com o sub-nó do fantoche. Todas as chaves, funções, etc. necessárias seriam especificadas via config para o encanto subordinado do nó do chef. Eu começaria por aí. Uma abordagem mais sofisticada seria o sub-nó do chef interrogar o serviço principal ao qual está conectado e seu servidor-chef para determinar dinamicamente as funções, mas isso seria um pouco mais difícil do que apenas especificá-los na configuração do sub.

Pareceres

Definitivamente, recomendo o método 1 acima, se possível. Ter a camada de coordenação em cima das ferramentas de configuração provavelmente funcionará bem a longo prazo. Desnecessário dizer que as infraestruturas do mundo real podem ser uma combinação ou variação de ambas as abordagens por um período de tempo ... especialmente durante a migração. A coexistência planejada usando o método 2 provavelmente funcionaria apenas se os componentes gerenciados por ambas as ferramentas fossem um pouco ortogonais entre si. Não sei exatamente como isso seria. Talvez o juju e o chef gerenciem serviços separados relativamente separados? Suspeito que possa funcionar bem para permitir que o juju gerencie os serviços principais e faça com que o chef gerencie mais aspectos da infraestrutura. Não sei. Essa é uma discussão um pouco mais longa :)

Nota lateral ... você também pode usar o juju para gerenciar o próprio chef-server ... até grandes instalações complexas de chefes e servidores de várias camadas. Ultimamente, eu não olhei para o charme chef-servidor, mas se ele atualmente não trata de classificação e separação de serviços, certamente pode ser feito.

Eu adoraria ver mais exemplos dos dois tipos de integração de chefes mencionados acima ... ele está na minha lista de desejos / tarefas há um tempo, mas ainda tem que subir bastante o suficiente em prioridade para ser concluído ... por favor, ajude se você está interessado!

ok, isso é um pedaço decente de divagar :)) vamos começar por aí, então podemos entrar em mais detalhes nos blocos de comentários subsequentes.

m_3
fonte
ótimas coisas aqui. "Suspeito que possa funcionar bem para permitir que o juju gerencie os serviços principais e faça com que o chef gerencie mais aspectos da infraestrutura". É nisso que estou realmente interessado, pois compartilhamos essa mesma suspeita. Como você disse, o DSL e o modelo do Chef são ótimos para configuração. No entanto, há outros aspectos do Chef Server (sacos de dados) que seriam difíceis de abandonar, no seu primeiro método. Juju, estando no nível de serviço, deve ser o melhor, mas acho que deve permitir que o Chef faça o que faz melhor no modelo do Servidor Chef. Deve funcionar para desenvolvedores e administradores. Mas talvez não seja necessário o Chef Server.
Ian D. Rossi