web-dev-qa-db-ja.com

パペットを使用してローカルRPMをインストールする方法

パペットを使用して特定の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

14
kamal

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による最初のコメントも参照してください。

16
Felix Frank

「rpm」パッケージは次の方法でインストールできます。

 package{'epel-release-6':
            provider => 'rpm',
            ensure => 'present',
            source => '/usr/local/rpms/epel-release-latest-6.noarch.rpm',
        }

編集:入力ミスを確実に修正

4
Vadim Sluzky

使用しているモジュール名は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

1
iamauser

最初から始めましょう:

サーバー上:

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