web-dev-qa-db-fra.com

Comment puis-je installer un rpm local à l'aide de marionnettes

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

14
kamal

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.

16
Felix Frank

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

4
Vadim Sluzky

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

1
iamauser

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',
            }
  }
0
Sourabh Wadhwa