Referência de recurso passando no fantoche

1

É possível passar referências de recursos de marionetes para outros recursos? Meu caso de uso é construir um pipeline de construção de jenkins com fantoche. Para encadear trabalhos jenkins em um pipeline, preciso passar o trabalho sucessor para um trabalho. Um subconjunto da definição é:

jobs::build { "Build ${release_name}":
  release           => $release_name,
  jenkins_jobs_path => $jenkins_jobs_path,
   successors        => 'Deploy',
}

jobs::deploy { "Deploy ${release_name}":
  release           => $release_name,
  jenkins_jobs_path => $jenkins_jobs_path,
  successors        => 'Smoke Test',
}

No def você vê que eu defino os sucessores pelo nome, ou seja, 'Implantar' e no caso do segundo trabalho 'Teste de fumaça'. O que eu gostaria de fazer é passar uma referência a um recurso e extrair o nome dele:

jobs::build { "Build ${release_name}":
  release           => $release_name,
  jenkins_jobs_path => $jenkins_jobs_path,
   successors       => Jobs::Deploy["Deploy ${release_name}"],
}

jobs::deploy { "Deploy ${release_name}":
  release           => $release_name,
  jenkins_jobs_path => $jenkins_jobs_path,
  successors        => Jobs::Smoke_test["Smoke Test ${release_name}"],
}

E, dentro dos jobs :: deploy e jobs :: build definition, eu acessaria o recurso por referência e consultaria seu tipo, etc.

É possível conseguir isso em fantoches?

    
por paweloque 26.10.2012 / 10:49

3 respostas

2

Sim, em vez de successors , use o parâmetro before meta. Todos os recursos no Puppet permitem o uso de quatro parâmetros que estabelecem a ordenação. before , require , subscribe e notify são os quatro meta-parâmetros de relacionamento. Inscrever-se e notificar são particularmente úteis para sinalizar se um recurso faz com que outro recurso seja atualizado.

Consulte o Guia de idiomas sobre fantoches para obter mais informações. Especificamente, as palavras-chave "pedidos" e "relacionamentos" devem ajudá-lo a encontrar as informações necessárias para resolver esse problema.

    
por 27.10.2012 / 19:55
0

Se eu entendi corretamente, o parâmetro successors não tem nada a ver com o parâmetro before meta do Puppet, mas está lá para definir as relações de trabalho do Jenkins.

Dito isto, o que você está pedindo não é possível com o Puppet. Você não pode consultar valores da referência de recurso, mesmo se puder passá-los para uma definição como um parâmetro.

Acho que você poderia gerenciar com:

jobs::build { "Build ${release_name}":
  release           => $release_name,
  jenkins_jobs_path => $jenkins_jobs_path,
  successors        => "Deploy ${release_name}",
}

ou com tags e <| |> operadores. Mas isso depende totalmente do conteúdo da definição jobs::build e da configuração necessária para o Jenkins.

    
por 30.10.2012 / 01:24
0

Isso soa mais como um trabalho para Mcollective do que para o Puppet. Muito genericamente, com Puppet você modela o estado, enquanto com Mcollective você modela a atividade. Escrever um agente MCollective que orquestra seu pipeline de construção é provavelmente o melhor caminho a seguir, se eu entendi seus requisitos corretamente. Puppet não vai te ajudar muito aqui.

    
por 30.10.2012 / 01:35

Tags