Подтвердить что ты не робот

Как установить локальную скорость вращения, используя марионетку

Я пытаюсь установить определенный rpm с помощью марионетки, мой init.pp:

class nmap {
  package {'nmap':
    provider => 'rpm',
    source => "<Local PATH to the 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

4b9b3361

Ответ 1

В отличие от типа ресурса file package не поддерживает Puppet URL-адреса файлового сервера. Вам нужно будет использовать ресурс 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 ниже.

Ответ 2

Пакет "rpm" можно установить следующим образом:

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

Изменить: исправлена ​​опечатка в обеспечении

Ответ 3

Кажется, что имя модуля, которое вы используете, 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

Ответ 4

Давайте начнем с начала:

на сервере:

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