在模块中重载人偶默认参数

Overload puppet default parameter in module

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

code on githubmanifests/params 中有这个:

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

所以当我使用这个 class 时,如果我说:

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

我得到Puppet (err): Invalid parameter

或者,如果我尝试使用大写字母定义值:

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

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

我能够通过在 library-jenkins/puppet-jenkins 内本地处理整个模块并更改值来实现此功能,但我不想不得不诉诸于此

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

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

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

的第 67-82 行的 url
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',
}

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