gpt4 book ai didi

package - Chef 包版本控制

转载 作者:行者123 更新时间:2023-12-02 17:46:34 25 4
gpt4 key购买 nike

如果 Chef 菜谱(或其任何菜谱依赖项)使用 package resource如果不指定版本,则安装最新版本的软件包。如果您想准确控制和测试正在安装的内容,则必须始终提供软件包版本。当您依赖的 cooking 书没有采取相同的预防措施时,您该怎么办?

例如,参见 default recipeark Recipe 。如果在生产服务器上使用此配方,它可能会安装未经测试的软件包。这只是一个示例(下载量超过 500 万次),所以我想知道人们是如何解决这个问题的。

最佳答案

What can you do when the cookbooks that you depend on do not take the same precautions?

我认为没有一个简单的答案。这基本上是“Chef 之道”......

(实际上,我建议硬连线软件包版本弊大于利。使用(好的)发行版软件包存储库的好处之一是它们会定期发布包含安全问题补丁的更新和错误。但是,如果您将固定的软件包版本连接到您的配方或角色/节点或其他东西中,您将阻止任何此类补丁传播到您的系统。)

但是,如果软件包版本稳定对您来说至关重要,那么也许......

  • 克隆并破解有问题的 Recipe 以使用特定版本。 (实际上,无论如何你可能都需要这样做,以避免被不稳定的 Recipe 所困扰!)

  • 使用重视长期稳定性的发行版(例如 RHEL 或其“克隆版本”),并且仅推出“真正重要”的软件包更新。

  • 创建您自己的发行版软件包存储库的私有(private)镜像,其中仅包含关键软件包的“良好”版本。

  • 修改 Chef,以便package 资源默认选择/安装指定版本。 (我认为这并不容易。但如果您确实在这个级别上提出了一个好的解决方案,那么这将是对 Chef 的一个非常有用的补充!我认为。)

<小时/>

更新

实际上,(至少)基于 Debian 的系统有一种方法可以做到这一点;请参阅apt cookbook特别是对“固定”的引用。

或者使用 yum,您可以使用“yum versionlock ...”“锁定”特定版本,如下所述:https://www.zulius.com/how-to/yum-install-specific-package-version/

更新 - 2

另一个可能的技巧是将 version 属性“注入(inject)”到“不安全”的包资源中。像这样的事情:

# first, include_recipe a recipe that specifies 'package "foo"' without 
# a version attribute

# then ...
r = resources("package[foo]")
r.variables['version'] = "1.2.3"

只要发挥一点聪明才智,就可以创建一个“包版本锁定”配方,从数据包中提取版本,并处理丢失的资源异常和实际提供的 version 属性。但我不知道这是否是“一个好主意”(tm)。

关于package - Chef 包版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25473784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com