パペットを使用して特定のrpmをインストールしようとしています、私のinit.ppは:
class nmap {
package {'nmap':
provider => 'rpm',
source => "<Local PATH to the RPM>",
}
}
そしてrpmは...modules/nmap/files
にあります
Rpmをマニフェストに移動し、ソースにrpm名を提供する場合=> ''
class nmap {
package {'nmap':
provider => 'rpm',
source => "rpm-name.rpm",
}
}
それは機能しますが、../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
file リソースタイプとは異なり、 package タイプはPuppet fileserver URLs をサポートしていません。インストールする前に、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"],
}
}
編集:通常、代わりにローカルのyumリポジトリを使用することをお勧めします。以下の@rojsによる最初のコメントも参照してください。
「rpm」パッケージは次の方法でインストールできます。
package{'epel-release-6':
provider => 'rpm',
ensure => 'present',
source => '/usr/local/rpms/epel-release-latest-6.noarch.rpm',
}
編集:入力ミスを確実に修正
使用しているモジュール名はnmap
のようです。このように同じsource
パラメータを使用できます。
source => 'puppet:///modules/nmap/nmap-6.45-1.x86_64.rpm',
モジュールの下のファイルにアクセスするための構文は次のようになります、
puppet:///modules/<modulename>/<file you want to access>
こちらのリンクを参照してください http://docs.puppetlabs.com/puppet/latest/reference/modules_fundamentals.html#files
最初から始めましょう:
サーバー上:
$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"],
}
}
}
INIT.pp
class Apache {
notify { 'Installing and Configuring Webserver for $osfamily': }
include Apache::mysqlinstall
}
Mysqlinstall.pp:
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',
}
}