使用Puppet安装RPM并执行脚本
我有一个安装shell脚本的RPM。Puppet代码需要访问这个RPM,检索打包在RPM中的shell脚本并执行它。我该怎么做?您可以通过使用Puppet安装RPM并执行脚本,puppet,rpm,Puppet,Rpm,我有一个安装shell脚本的RPM。Puppet代码需要访问这个RPM,检索打包在RPM中的shell脚本并执行它。我该怎么做?您可以通过 rpm -qp --script foo.rpm 请注意,它包含所有脚本(%pre,%post,%poston…),因此您需要使用sed或类似的工具来提取一个脚本,将其保存到文件并运行。您需要一个package语句来安装rpm,然后需要一个exec来运行shell脚本。假设您的rpm名为my-shellscript.rpm,并且位于模块的files目录中,
rpm -qp --script foo.rpm
请注意,它包含所有脚本(%pre,%post,%poston…),因此您需要使用sed或类似的工具来提取一个脚本,将其保存到文件并运行。您需要一个package语句来安装rpm,然后需要一个exec来运行shell脚本。假设您的rpm名为my-shellscript.rpm,并且位于模块的files目录中,并且rpm将安装位置定义为/tmp/my-shellscript.sh,那么您将得到如下内容:
class example {
package { 'my-shellscript.rpm' :
ensure => 'installed',
provider => 'rpm',
source => 'puppet:///modules/example/my-shellscript.rpm',
}
exec { 'my-shellscript.sh':
command => '/tmp/my-schellscript.sh',
require => Package['my-shellscript.rpm'],
}
}
要从代码中执行脚本,需要执行以下步骤:
rpm2cpio test.rpm | cpio-idmv
rpm-qpl test.rpm | grep“script.sh”
sh/tmp/test/xxx/script.sh