Как правильно установить репозиторий с Puppet - PullRequest
0 голосов
/ 06 февраля 2019

Я изо всех сил пытаюсь установить репозиторий с Puppet, в частности, репозиторий zabbix.Я получил zabbix репозиторий для CentOS 7 из здесь и использую следующее:

http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

Я попытался использовать следующий код Puppet, чтобы установить его на свой узел, и он не 't, кажется, работает:

node 'puppet-agent' {
    include importRepos
    package { 'php':
        ensure => "installed",
    }
    package { 'zabbix-agent':
        ensure => "installed", 
    }

}

class importRepos {
    yumrepo { "zabbix":
        baseurl => "http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm",
        descr => "Zabbix repo to install Zabbix client on CentOS 7",
        enabled => 1,
        gpgcheck => 1
        }
}

Я получил ошибку:

...
Execution of '/usr/bin/yum -d 0 -e 0 -y install zabbix-agent' returned 1: Delta RPMs disabled because /usr/bin/applydeltarpm not installed.


Error downloading packages:
  zabbix-agent-3.4.15-1.el7.x86_64: [Errno 256] No more mirrors to try.

Я попытался установить пакет deltarpm, и теперь я получаю эту ошибку:

...
Error downloading packages:
  zabbix-agent-3.4.15-1.el7.x86_64: [Errno 256] No more mirrors to try.
Error: /Stage[main]/Main/Node[puppet-agent]/Package[zabbix-agent]/ensure: change from purged to present failed: Execution of '/usr/bin/yum -d 0 -e 0 -y install zabbix-agent' returned 1: No Presto metadata available for zabbix


Error downloading packages:
  zabbix-agent-3.4.15-1.el7.x86_64: [Errno 256] No more mirrors to try.

Затем я сделал yum clean all и попробовал снова, и теперь я получаю эту ошибку:

Error: Execution of '/usr/bin/yum -d 0 -e 0 -y install zabbix-agent' returned 1: One of the configured repositories failed (Zabbix repo to install Zabbix client on CentOS 7),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

Рекомендуется отключить репо, поэтому я не уверен, какую ошибку я совершил, но по какой-то причинене похоже, что репозиторий действителен в зависимости от того, как я его настроил. Кто-нибудь знает, как заставить репозиторий zabbix работать в Puppet, чтобы я мог установить агент zabbix?

1 Ответ

0 голосов
/ 06 февраля 2019

Вы всегда должны иметь в виду, что DSL Puppet ориентирован на детали состояния машины, которые должны управляться, а не на детали изменения состояния машины.Это помогло бы вам избежать неправильного толкования документов для типа ресурса Yumrepo .

В частности, свойство baseurl этого типа напрямую соответствует параметру Yum для конфигурации репозиториято же имя.Этот параметр обозначает базовый URL хранилища (так, вероятно, http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/ в вашем случае), а не имя пакета, который необходимо установить для получения определения хранилища.

Если вам нравится, выможет вообще обойтись без пакета и вместо этого сконфигурировать репозиторий строго через ресурс Yumrepo.Однако если вы хотите управлять им хотя бы частично через пакет, у вас возникнет проблема «курица и яйцо»: где вы получаете пакет, чтобы создать определение репо для репо, содержащего пакет?Существует две основные альтернативы:

  • Выполните начальную настройку хранилища в рамках процесса обеспечения, выходящего за рамки Puppet, путем установки пакета вручную.После этого вы можете как настроить конфигурацию репозитория, так и обновить пакет репозитория с помощью Puppet.

  • Поместите копии пакетов репозитория в свой собственный локальный репозиторий (у вас есть, донне так ли?)Сконфигурируйте это репозиторий так, как вам нравится, позволяя Puppet устанавливать оттуда пакеты репо-релизов.

В любом случае, если вы управляете обоими релиз-пакетами и репо через Puppet, то эта частьвыглядит примерно так:

class importRepos {
  package { 'zabbix-release' ensure => 'latest' }

  yumrepo { "zabbix":
    # Most repo properties probably should not be managed
    enabled  => 1,
  }
}

Сделав это, вам также может понадобиться немного помнить о порядке классов и ресурсов.Это слишком большая тема, чтобы ее охватить одним SO-ответом, но для вашего конкретного случая, учитывая, что вы объявляете пакеты непосредственно в блоке узла, а не через класс, я бы рекомендовал объявить соответствующую зависимость среди свойств соответствующего пакета.:

node 'puppet-agent' {
  include importRepos

  package { 'php':
    ensure => "installed",
  }

  package { 'zabbix-agent':
    ensure  => "installed",
    require => Yumrepo['zabbix'],  # <--- this
  }
}
...