如何使用puppet安装本地rpm
我正在尝试使用puppet安装特定的rpm,我的init.pp是:如何使用puppet安装本地rpm,puppet,Puppet,我正在尝试使用puppet安装特定的rpm,我的init.pp是: class nmap { package {'nmap': provider => 'rpm', source => "<Local PATH to the RPM>", } } 它可以工作,但如何使用。/files/指定源路径并成功应用 当我使用: source=>'puppet:///files/nmap-6.45-1.x86_64.rpm“, 我得到一个错误: Debug:
class nmap {
package {'nmap':
provider => 'rpm',
source => "<Local PATH to the RPM>",
}
}
它可以工作,但如何使用。/files/
指定源路径并成功应用
当我使用:
source=>'puppet:///files/nmap-6.45-1.x86_64.rpm“,
我得到一个错误:
Debug:执行'/bin/rpm-ipuppet:///files/nmap-6.45-1.x86_64.rpm“
错误:执行'/bin/rpm-ipuppet:///files/nmap-6.45-1.x86_64.rpm'返回1:错误:打开puppet:///files/nmap-6.45-1.x86_64.rpm 失败:没有这样的文件或目录
Error:/Stage[main]/Nmap/Package[Nmap]/sure:从缺席到现在的更改失败:执行'/bin/rpm-i'puppet:///files/nmap-6.45-1.x86_64.rpm'返回1:错误:打开puppet:///files/nmap-6.45-1.x86_64.rpm 失败:没有这样的文件或目录
`
运行命令时:
sudo puppet apply--modulepath=/home/user1/qa/puppet\u qa/modules/-e“include nmap”--debug
与资源类型不同,该类型不支持puppet。安装前,您需要使用文件
资源下载rpm
。如果这是一个反复出现的问题,请创建一个定义类型
,一次性完成这些操作(想想宏),例如
编辑:通常建议使用本地yum repo,另请参见下面@rojs的第一条评论。您使用的模块名称似乎是
nmap
。您可以像这样使用相同的source
参数
source => 'puppet:///modules/nmap/nmap-6.45-1.x86_64.rpm',
puppet:///modules/<modulename>/<file you want to access>
访问模块下文件的语法如下所示
source => 'puppet:///modules/nmap/nmap-6.45-1.x86_64.rpm',
puppet:///modules/<modulename>/<file you want to access>
puppet:///modules//
请参见此处的链接,“rpm”软件包可以通过以下方式安装:
package{'epel-release-6':
provider => 'rpm',
ensure => 'present',
source => '/usr/local/rpms/epel-release-latest-6.noarch.rpm',
}
编辑:更正输入错误,确保让我们从头开始: 在服务器上:
$rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
$yum -y install puppetserver
$vi /etc/sysconfig/puppetserver #change JAVA args
$systemctl start puppetserver
$systemctl enable puppetserver
$vi /etc/puppetlabs/puppet/puppet.conf #Add “dns_alt_names” in [master]
关于代理:
$rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
$yum -y install puppet-agent
$systemctl start puppet
$systemctl enable puppet
$vi /etc/puppetlabs/puppet/puppet.conf # Add “server = pupmaster” in [main]
puppet cert list
puppet cert sign
/etc/puppetlabs/code/environments/production/manifests/site.pp:
node webserver {
class { 'apache': }
}
node dbserver {
class { ‘mysql’: }
}
mkdir –p /etc/puppetlabs/code/environments/production/modules/apache/{manifests, files}
apacheinstall.pp:
class apache::apacheinstall {
if $osfamily == 'redhat' {
package { 'httpd':
ensure => 'latest'
}
service {'httpd':
ensure => 'running',
require => Package["httpd"],
}
file { '/var/www/html/ndex.html':
mode => "0644",
owner => 'root',
group => 'root',
source => 'puppet:///modules/apache/index.html',
}
}
elsif $osfamily == 'debian' {
package { 'apache2':
ensure => 'latest'
}
service {'httpd':
ensure => 'running',
require => Package["httpd"],
}
}
}
class apache::mysqlinstall {
exec { 'wget':
path => [ "/bin/", "/sbin/", "/usr/bin/", "/usr/sbin/" ],
command => "/usr/bin/wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm && rpm -ivh /tmp/mysql57-community-release-el7-9.noarch.rpm",
cwd => '/tmp/',
creates => '/etc/firstruns/p1.done',
}
}
INIT.pp
class apache {
notify { 'Installing and Configuring Webserver for $osfamily': }
include apache::mysqlinstall
}
Mysqlinstall.pp:
class apache::apacheinstall {
if $osfamily == 'redhat' {
package { 'httpd':
ensure => 'latest'
}
service {'httpd':
ensure => 'running',
require => Package["httpd"],
}
file { '/var/www/html/ndex.html':
mode => "0644",
owner => 'root',
group => 'root',
source => 'puppet:///modules/apache/index.html',
}
}
elsif $osfamily == 'debian' {
package { 'apache2':
ensure => 'latest'
}
service {'httpd':
ensure => 'running',
require => Package["httpd"],
}
}
}
class apache::mysqlinstall {
exec { 'wget':
path => [ "/bin/", "/sbin/", "/usr/bin/", "/usr/sbin/" ],
command => "/usr/bin/wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm && rpm -ivh /tmp/mysql57-community-release-el7-9.noarch.rpm",
cwd => '/tmp/',
creates => '/etc/firstruns/p1.done',
}
}
回答正确,但我要补充一点,在puppet存储库中存储RPM并每次编写文件和包资源会很快过时。最好设置您自己的yum服务器并从那里分发rpm。需要做一些工作来设置,但一旦设置完成,事情就会变得更容易。//,上面的内容适用于带有puppetlabs/centos-6.6-32-Puppet vagrant box的Puppet,来自vagrantbox.es.provider=>“rpm”对我来说不见了;否则,首先,yum会搜索包-在我的情况下,这会失败有时这样测试更容易:
sudo puppet apply-e“package{['your-rpm']:sure=>'ver.1';}
而不是包括文件。$mysql\u password=“myT0pS3cretPa55worD”在site.pp中