在模块中重载puppet默认参数

时间:2016-04-18 04:09:47

标签: puppet

我想使用自己的Jenkins插件服务器从中获取插件。我正在使用puppet-jenkins模块,但我似乎无法更改默认的插件主机值

code on githubmanifests/params中有此内容:

class jenkins::params {
    ..
    $default_plugins_host  = 'https://updates.jenkins-ci.org'
    ..
}

所以,当我使用这门课时,如果我说:

class { 'jenkins': 
     default_plugins_host => "https://myhost.local"
} 

我得到Puppet (err): Invalid parameter

或者,如果我尝试使用capscase定义值:

Jenkins::Params { 
     default_plugins_host => "https://specificallybrokenhost.com"
} 

傀儡没有使用它。我通过给它一个不存在的插件主机来测试这个,期望插件安装失败;但它能够成功获得插件(我的假设是它仍然使用jenkins-ci.org)

我能够通过在library-jenkins/puppet-jenkins内本地处理整个模块并更改价值来实现这一目标,但我宁愿不必诉诸于此

我正在使用puppet-librarian和Puppet 3.3,如果有帮助的话。

1 个答案:

答案 0 :(得分:1)

params.pp文件存储私有变量。这不能被覆盖。

查看模块,您可以更改plugin.pp

第67-82行的网址
if $version {
  $plugins_host = $update_url ? {
    undef   => $::jenkins::default_plugins_host,
    default => $update_url,
  }
 $base_url = "${plugins_host}/download/plugins/${name}/${version}/"
 $search   = "^${name} ${version}$"
}
else {
  $plugins_host = $update_url ? {
    undef   => $::jenkins::default_plugins_host,
    default => $update_url,
  }
  $base_url = "${plugins_host}/latest/"
  $search   = "${name} "
}

$ plugins_host将使用update_url,如果它已定义而不是default_plugins_host。如果您在插件定义类型上设置了默认值,则可以将default_plugins_host更改为update_url,如此;

Jenkins::Plugin {
  source_url => 'mycompany.jenkins.com',
}

我自己没有测试过这个。所以,让我知道它是否有效。