Назад | Перейти на главную страницу

Ссылка на ресурс передается в марионетке

Можно ли передавать ссылки на ресурсы марионетки другим ресурсам? Мой вариант использования - построить конвейер сборки jenkins с марионеткой. Чтобы связать рабочие места Дженкинса в конвейер, мне нужно передать работу преемника. Подмножество определения:

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',
}

В def вы видите, что я определяю преемников по имени, то есть «Развернуть», а в случае второго задания - «Дымовой тест». Я бы хотел передать ссылку на ресурс и извлечь из него имя:

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}"],
}

А затем в определениях jobs :: deploy и jobs :: build я бы получил доступ к ресурсу по ссылке и запросил его тип и т. Д.

Можно ли добиться этого в марионетке?

Да вместо successors, использовать before мета параметр. Все ресурсы в Puppet позволяют использовать четыре параметра, которые устанавливают порядок. before, require, subscribe, и notify четыре мета-параметра отношения. Подписка и уведомление особенно полезны для сигнализации, если ресурс вызывает обновление другого ресурса.

Пожалуйста, посмотрите Руководство по языку кукол Чтобы получить больше информации. В частности, ключевые слова «упорядочивание» и «отношения» должны помочь вам найти информацию, необходимую для решения этой проблемы.

Если я правильно понял, successors параметр не имеет ничего общего с Puppet's before мета-параметр, но он должен определять рабочие отношения для Дженкинса.

При этом то, что вы просите, невозможно с Puppet. Вы не можете запрашивать значения из ссылки на ресурс, даже если вы можете передать их в определение в качестве параметра.

Думаю, ты справишься с:

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

или с тегами и <| |>операторы. Но это полностью зависит от содержимого jobs::build определение и конфигурация, необходимая для Jenkins.

Это больше похоже на работу для Mcollective чем для Марионетки. В общем, с Puppet вы моделируете состояние, а с Mcollective вы моделируете активность. Написание агента MCollective, который управляет конвейером сборки, вероятно, лучший способ пойти, если я правильно понимаю ваши требования. Puppet здесь не особо поможет.