J'essaie d'installer un rpm particulier à l'aide de marionnettes, mon init.pp est:
class nmap {
package {'nmap':
provider => 'rpm',
source => "<Local PATH to the RPM>",
}
}
et le régime est en ...modules/nmap/files
Si je déplace le rpm vers des manifestes et que je fournis le nom du rpm dans source => ''
class nmap {
package {'nmap':
provider => 'rpm',
source => "rpm-name.rpm",
}
}
cela fonctionne, mais comment puis-je spécifier le chemin source avec ../files/
et les marionnettes s'appliquent avec succès
Quand j'utilise:
source => 'puppet:///files/nmap-6.45-1.x86_64.rpm',
je reçois une erreur:
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
`
lors de l'exécution de la commande:
Sudo puppet apply --modulepath=/home/user1/qa/puppet_qa/modules/ -e "include nmap" --debug
Contrairement au type de ressource fichier , le type package ne prend pas en charge Puppet RL du serveur de fichiers . Vous devrez utiliser une ressource file
pour télécharger le rpm
avant de l'installer. S'il s'agit d'un problème récurrent pour vous, effectuez un defined type
qui fait ceux en une seule fois (pensez aux macros), par exemple.
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"],
}
}
Edit: il est généralement conseillé d'utiliser à la place un repo local, voir aussi le premier commentaire de @rojs ci-dessous.
Le package "rpm" peut être installé de cette façon:
package{'epel-release-6':
provider => 'rpm',
ensure => 'present',
source => '/usr/local/rpms/epel-release-latest-6.noarch.rpm',
}
Modifier: faute de frappe corrigée dans assurer
Il semble que le nom du module que vous utilisez soit nmap
. Vous pouvez utiliser le même paramètre source
comme celui-ci,
source => 'puppet:///modules/nmap/nmap-6.45-1.x86_64.rpm',
La syntaxe pour accéder à un fichier sous un module est la suivante,
puppet:///modules/<modulename>/<file you want to access>
Voir ce lien ici, http://docs.puppetlabs.com/puppet/latest/reference/modules_fundamentals.html#files
Commençons par le début:
sur le serveur:
$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]
Sur l'agent:
$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',
}
}