可以使用Opsworks设置jenkins服务器

时间:2015-11-07 21:20:51

标签: amazon-web-services chef chef-recipe aws-opsworks

我试图通过AWS Opsworks设置Jenkins服务器。我将https://github.com/chef-cookbooks/jenkins添加到自定义配方部分。并将jenkins :: master添加到事件生命周期的设置步骤中。但是,当我尝试创建实例时,我会收到以下错误:

[2015-11-07T21:12:41+00:00] ERROR: Running exception handlers
[2015-11-07T21:12:41+00:00] ERROR: Exception handlers complete
[2015-11-07T21:12:41+00:00] FATAL: Stacktrace dumped to     /var/lib/aws/opsworks/cache.stage2/chef-stacktrace.out
[2015-11-07T21:12:41+00:00] ERROR: 412 "Precondition Failed"
[2015-11-07T21:12:41+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

我还在日志文件中看到此错误:

Missing Cookbooks:
------------------
No such cookbook: apt

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

使用Berkshelf来管理cookbook依赖项,不需要在自己的存储库中存储社区cookbook。

简而言之:在Berksfile中指定cookbooks依赖项及其约束(如果有),类似于:

# Berksfile
source 'https://supermarket.getchef.com'
cookbook 'apt', '2.0.0'

然后执行berks install && berks vendor --path vendor/cookbooks。确保通过执行knife cookbook upload --all --cookbook-path vendor/cookbooksknife cookbooks upload --all --include-dependencies将所有食谱上传到您的厨师服务器(或正确管理任何其他实体,例如test-kitchen)。

如果你正确配置了一切,那么你应该没有问题。 确保将Berksfile.lock存储在您的存储库中。

答案 1 :(得分:0)

查看git repo上的metadata.rb文件: 它清楚地表明这些依赖关系可能在您的OpsWorks回购中缺失:

  • 取决于'apt','2.0'
  • 取决于'runit','1.5'
  • 取决于'yum','3.0'

您需要将这些烹饪书(在这些版本中)添加到您的opsworks git repo中。 你可能需要运行OpsWorks更新自定义cookbook的任务,这样才能生效,这里是how