我创建了一个节点集来测试重用静态主节点的 Puppet 模块。为了完成这个难题,我需要确保(以便多个测试可以同时运行)依赖模块安装到一个唯一的 /environments 文件夹中。
我已将被测模块设置为复制,因此使用
copy_module_to(host, source: PROJECT_ROOT, target_module_path: "/etc/puppetlabs/code/environments/#{agents[0].hostname}/modules/", protocol: 'rsync')
但是无法以相同的方式获得 install_module_dependencies_on(host) 函数来安装 deps。
查看 module_utils.rb 源代码 (https://github.com/voxpupuli/beaker-puppet/blob/master/lib/beaker-puppet/install_utils/module_utils.rb),有一个参数 'default_module_install_opts' 如果在节点集中设置,则将其传递给函数即
default_module_install_opts: {'target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules'}
,但是从节点集中它不会解析参数“#{agents[0].hostname}”,而是创建该名称的文字目录。
我尝试了许多排列来设置 spec_helper_acceptance 文件中的参数,但是它们在调用时没有传递给函数。下面是我在调用 'install_module_dependecies_on' 之前尝试设置参数的一些不成功的事情。感谢您提出任何建议(无需质疑我为什么要在静态母版上实现这一目标)。
host.options[:default_module_install_opts] = "{ target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules }"
options[:default_module_install_opts] = "{ target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules }"
set :host, options[:default_module_install_opts] = "{ target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules }"
set options[:default_module_install_opts] = "{ target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules }"
ENV['default_module_install_opts'] = "{ target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules }"
host[:default_module_install_opts] = "{ target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules }"
set default_module_install_opts: '{ "target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules" }'
default_module_install_opts = "{ target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules }"
options['default_module_install_opts'] = "{ target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules }"
@default_module_install_opts = "{ target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules }"
$default_module_install_opts = "{ target-dir /etc/puppetlabs/code/environments/#{agents[0].hostname}/modules }"