首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确安装带Puppet的存储库

如何正确安装带Puppet的存储库
EN

Stack Overflow用户
提问于 2019-02-06 18:35:27
回答 1查看 1.6K关注 0票数 0

我很难用Puppet安装一个存储库,特别是zabbix存储库。我从CentOS 7中获得了这里的zabbix存储库,并使用了以下内容:

代码语言:javascript
复制
http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

我尝试使用下面的木偶代码在我的节点上安装它,但它似乎不起作用:

代码语言:javascript
复制
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
        }
}

我得到的错误是:

代码语言:javascript
复制
...
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包,现在我得到了以下错误:

代码语言:javascript
复制
...
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.

然后我做了一个彻底的清理,然后再试一次,现在我得到了这个错误:

代码语言:javascript
复制
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:

它建议我禁用回购,所以我不确定我犯了什么错误,但由于某些原因,基于我如何配置it.Does,似乎没有人知道我如何让zabbix回购在Puppet中工作,这样我就可以安装zabbix代理了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-06 20:28:01

您必须始终记住,木偶的DSL专注于要管理的机器状态细节,而不是更改机器状态的细节。这将有助于您避免误解Yumrepo资源类型的文档

具体来说,该类型的baseurl属性直接对应于同名的每个存储库Yum配置参数。该参数指定存储库的基本URL (在您的例子中可能是http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/ ),而不是要安装以获得回购定义的包的名称。

如果您愿意,您可以完全不用包,而是严格地通过Yumrepo资源配置存储库。但是,如果您希望至少部分地通过包来管理它,那么您就会遇到一个鸡和蛋问题:您从哪里获得包,以便为包含包的回购定义创建一个回购定义?有两种主要的选择:

  • 通过手动安装包,将存储库的初始配置作为供应过程的一部分,在Puppet范围之外执行。此后,您可以通过Puppet修改回购配置和更新存储库发布包。
  • 将存储库发布包的副本放入您自己的本地包回购(您确实有一个,不是吗?)根据您的喜好配置回购包,允许木偶从那里安装回购包。

无论哪种方式,如果您通过Puppet管理发布包和回购细节,那么这个部分如下所示:

代码语言:javascript
复制
class importRepos {
  package { 'zabbix-release' ensure => 'latest' }

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

这样做之后,您可能还需要注意类和资源的排序。这是一个很大的主题,不能用一个这样的答案来回答,但是对于您的具体情况,考虑到您是直接在节点块中而不是通过类声明包,我的建议是声明相关包的属性之间的适当依赖关系:

代码语言:javascript
复制
node 'puppet-agent' {
  include importRepos

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

  package { 'zabbix-agent':
    ensure  => "installed",
    require => Yumrepo['zabbix'],  # <--- this
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54560364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档