如何使用puppet安装本地rpm

kam*_*mal 14 puppet

我正在尝试使用puppet安装特定的rpm,我的init.pp是:

class nmap {
  package {'nmap':
    provider => 'rpm',
    source => "<Local PATH to the RPM>",
  }
}
Run Code Online (Sandbox Code Playgroud)

并且rpm在 ...modules/nmap/files

如果我将rpm移动到清单,并在source =>''中提供rpm名称

class nmap {
  package {'nmap':
    provider => 'rpm',
    source => "rpm-name.rpm",
  }
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我如何指定源路径../files/和成功应用木偶

当我使用:

source => 'puppet:///files/nmap-6.45-1.x86_64.rpm',

我收到一个错误:

Debug: Executing '/bin/rpm -i puppet:///files/nmap-6.45-1.x86_64.rpm' Error: Execution of '/bin/rpm -i puppet:///files/nmap-6.45-1.x86_64.rpm' returned 1: error: open of puppet:///files/nmap-6.45-1.x86_64.rpm failed: No such file or directory

Error: /Stage[main]/Nmap/Package[nmap]/ensure: change from absent to present failed: Execution of '/bin/rpm -i puppet:///files/nmap-6.45-1.x86_64.rpm' returned 1: error: open of puppet:///files/nmap-6.45-1.x86_64.rpm failed: No such file or directory `

运行命令时:

sudo puppet apply --modulepath=/home/user1/qa/puppet_qa/modules/ -e "include nmap" --debug

Fel*_*ank 16

文件资源类型不同,类型不支持Puppet 文件服务器URL.在安装之前,您需要使用file资源下载rpm.如果这对您来说是一个反复出现的问题,那么请defined type一次性完成(想想宏),例如

define fileserver_package($source, $ensure='installed') {
  file { "/my/tmp/dir/$name.rpm": source => $source }
  package { $name:
    ensure => $ensure,
    provider => 'rpm',
    source => "/my/tmp/dir/$name.rpm",
    require => File["/my/tmp/dir/$name.rpm"],
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:通常建议使用本地yum repo,另请参阅@rojs下面的第一条评论.

  • 一个正确的答案,但我想补充一点,将rpms存储在你的puppet存储库中,每次写入文件和包资源都会变得很快.最好设置自己的yum服务器并从那里播放转发器.做一些工作来设置,但一旦它开始使事情变得更容易. (3认同)