如何通过 chefzero vagrant provisioner 配置 jenkins

如何通过 chefzero vagrant provisioner 配置 jenkins

使用詹金斯食谱 2.2.2

==>https://supermarket.chef.io/cookbooks/jenkins

我可以使用 chef_zero provisioner 在 vagrant vm 中启动 jenkins

chef.run_list = [ 'recipe[jenkins::master]', ]

但是,我尝试安装插件并从 erb 模板创建新作业,但没有成功。我的理解是,配置应使用 chef zero 的“chef.json”数据结构传递。我尝试了许多语法配置,但没有成功(也没有错误,因为如果不正确,它就会被忽略)

下面是一个安装不起作用的插件的示例(我猜问题是如何使用 chef_zero 规定在 vagrant 内部的配方中配置 chef 资源):

chef.json = { 'java' => { 'jdk_version' => '7', }, 'jenkins' => { 'master' => { 'jenkins_plugin' => [ 'job-dsl', 'groovy', 'git', 'packer' ] } } }

如果有人可以提供 chef.json 的工作示例,我将不胜感激,vagrant chef_zero provisioner 想要安装 jenkins 插件(和/或从 erb 模板或 xml 文件安装新作业)

答案1

答案是插件和作业不能被社区詹金斯食谱直接调用。需要制作一个包装食谱(这取决于詹金斯)。

这是通过创建一本空白的食谱来完成的: knife cookbook create jenkins_wrapper

添加社区食谱依赖项(jenkins_wrapper/metadata.rb): depends 'jenkins'

然后让它做一些事情(jenkins_wrapper/recipes/default.rb): jenkins_plugin 'git' jenkins_plugin 'job-dsl'

此外,如果使用 berkshelf,则必须在 Berksfile 中添加 cookbook 的路径:( cookbook 'jenkins_wrapper', path: '/path/to/jenkins_wrapper' 此路径可以是相对的)

我花了几个小时才弄清楚这一切,所以希望这可以帮助别人节省一些时间

答案2

你可以看看. 也许这会有所帮助

相关内容