【发布时间】:2025-12-21 07:10:09
【问题描述】:
我编写了一个简单的模块来在 Ubuntu VM 上安装软件包 (BioPerl)。整个 init.pp 文件在这里: https://gist.github.com/anonymous/17b4c31bf7309aff14dfdcd378e44f40
问题是它不起作用,它没有给我任何反馈让我知道它为什么不起作用。模块中有 3 个简单的步骤。我检查了一下,它没有做任何事情。这是前两个:
第 1 步:下载存档并将其保存到 /usr/local/lib
exec { 'bioperl-download':
command => "sudo /usr/bin/wget --no-check-certificate -O ${archive_path} ${package_uri}",
require => Package['wget']
}
第 2 步:提取存档
exec { 'bioperl-extract':
command => "sudo /usr/bin/tar zxvf ${archive_path} --directory ${install_path}; sudo rm ${archive_path}",
require => Exec['bioperl-download']
}
很简单。但我不知道问题出在哪里,因为我看不到它在做什么。供应商设置为详细模式,这是我的模块的输出行:
==> default: Notice: /Stage[main]/Bioperl/Exec[bioperl-download]/returns: executed successfully
==> default: Notice: /Stage[main]/Bioperl/Exec[bioperl-extract]/returns: executed successfully
==> default: Notice: /Stage[main]/Bioperl/Exec[bioperl-path]/returns: executed successfully
所以我只知道它成功执行了这三个步骤。它并没有告诉我这些步骤是否正确完成了他们的工作。我知道它没有将存档下载到/usr/local/lib 那个目录,也没有将环境变量文件添加到/usr/profile.d。也许问题是包含目录的变量是错误的。也许包含档案下载 URI 的变量是错误的。我怎样才能找到这些东西?
更新:
事实证明该模块确实有效。但是为了改进模块(因为我想将它上传到forge.puppetlabs.com,我尝试实施马特建议的更改。这是新代码:
file { 'bioperl-download':
path => "${archive_path}",
source => "http://cpan.metacpan.org/authors/id/C/CJ/CJFIELDS/${archive_name}",
ensure => "present"
}
exec { 'bioperl-extract':
command => "sudo /bin/tar zxvf ${archive_name}",
cwd => "${bioperl_target_dir}",
require => File['bioperl-download']
}
一个问题:它给了我一个错误,告诉我来源不能是http://。我在文档中看到他们确实允许http:// 文件作为file 资源的来源。也许我使用的是旧版本的木偶?
我想试用puppet-archive 模块,但我不确定如何将其设置为必需的依赖项。我的意思是我如何确保首先安装它。我是否需要让我的模块从 github 下载模块并将其保存到模块目录?或者有没有办法让 puppet 自动安装它?我将它作为依赖项添加到metadata.json 文件中,但这并没有安装它。我知道我可以让我的模块下载包,但我想知道最好的做法是什么。
【问题讨论】:
标签: puppet