使用 Chef + Berkshelf 在 OpsWorks 上运行 Python 时出错
Posted
技术标签:
【中文标题】使用 Chef + Berkshelf 在 OpsWorks 上运行 Python 时出错【英文标题】:Error running Python on OpsWorks with Chef + Berkshelf 【发布时间】:2016-09-26 22:51:19 【问题描述】:我正在尝试让 Python 2.7 在我的 OpsWorks 实例上运行,但我一直在启动时遇到错误。
我的 OpsWork 堆栈使用 Chef 11.10 版和 Berkshelf 3.2.0 版设置。
我的metadata.rb
包含以下内容:
depends "poise-python"
depends "apt", ">= 1.8.2"
我的Berksfile
设置为:
source "https://supermarket.chef.io"
cookbook 'poise-python'
cookbook 'apt'
每次我启动时都会收到以下错误,我不知道如何解决它:
Halite 不兼容 no_lazy_load false,请设置 在您的 Chef 配置文件中 no_lazy_load 为 true。
我尝试添加一个chef/configuration.rb
文件以将no_lazy_load
设置为true,但它似乎不起作用。坦率地说,我是 OpsWorks 和 Chef 的新手,所以我可能会遗漏一些非常基本的东西。
更多信息
我要接管的堆栈最初引用 python
而不是 poise-python
,但当我尝试使用该堆栈运行时,我已从该堆栈切换以解决另一个错误(但我猜是相关的):
此资源使用 Chef 12.5 自定义资源编写,需要 至少 Chef 12.0 与 compat_resource 食谱一起使用,它不会 与 Chef 11.x 客户端合作,这些用户必须固定他们的食谱 到旧版本或升级。
我尝试固定到旧版本的 python
,但仍然无法正常工作。基本上,我知道这个实例可以运行(以前的维护者已经运行),但我不确定我缺少什么。
【问题讨论】:
【参考方案1】:经过一番谷歌搜索,我想出了如何在不升级 Chef 版本的情况下完成这项工作。我在我的 Berksfile 中添加了以下行:
cookbook 'build-essential', '= 3.2.0'
【讨论】:
【参考方案2】:我的食谱与 Chef 11 不兼容,您必须将堆栈升级到 Chef 12。
【讨论】:
所以我应该补充一点,我接管了一个在 Chef 11.10 下配置的其他地方工作的系统。它最初使用python
而不是 poise-python
但我在运行它时遇到了不同的错误,还抱怨 Chef 版本。我将使用该信息更新问题,但基本上我试图避免升级 Chef 版本,因为我不熟悉它。
我没有在 OpsWorks 上进行任何测试,但旧的 python
食谱目前已完全弃用且不受支持。以上是关于使用 Chef + Berkshelf 在 OpsWorks 上运行 Python 时出错的主要内容,如果未能解决你的问题,请参考以下文章
我已经安装了 chef-dk 并开始使用 berkshelf 但berks 上传失败
随着vagrant-berkshelf被弃用,是否有可能从Vagrant驱动构建,而Chef只作为供应者?
Managing Chef Cookbooks the Berkshelf way