我们正在尝试使用Poise来管理Centos7服务器上Python和Ruby的运行时。根据我的理解,这适用于其他食谱,但我无法弄清楚"对"方法是将二进制文件链接到标准bin位置(/ usr / bin /等)。到目前为止,我一直无法找到一种方法来执行此操作作为标准流程的一部分 - 只需通过挖掘来找出它们的安装位置,然后在配方后面单独添加这些链接 - 它似乎是一个主要的破解。
换句话说,在具有一些脚本的配方中添加以下内容,这些脚本将被复制到需要Python 3的服务器,就像安装Python 3一样:
python_runtime '3'
但脚本(无法更改)永远不会知道Python 3存在。
如果我只是使用yum安装Python3,那么一切显然都能正常工作 - 这对于Centos来说实际上看起来也很好。
我对Chef来说相对较新,但是我已经与其他devops团队成员核实并进行了大量搜索,我们无法弄清楚这是如何正式完成的。我们不是在寻找更多的黑客,因为我们显然可以做到这一点,但是什么是#34; Chef"这样做的方法?
提前致谢。
答案 0 :(得分:0)
不幸的是,只是链接二进制文件并不会对你有很大的帮助,因为默认情况下它会使用需要一些特殊环境变量才能运行的SCL软件包。如果你想让它使用"正常"系统你可以这样做:
import pandas as pd
from pandas.io.json import json_normalize, loads
raw_json = pd.read_json('sample.json', lines=True)
raw_json.set_index('index', inplace=True)
with open('sample.json') as f:
lines = f.readlines()
exploded_columns = pd.concat([json_normalize(loads(l), 'unnecessaryList', 'index').pivot(index='index', columns='colName', values='value') for l in lines])
data = pd.merge(raw_json[['a', 'b']], exploded_columns, left_index=True, right_index=True)
然而,这可能会失败,因为没有适用于Python 3的EL7发行版软件包。如果你想继续使用SCL软件包但让它们看起来像普通的二进制文件,可以尝试这样的事情:
python_runtime '3' do
provider :system
end
或类似的东西。这仍然是一个事实,它是SCL引擎盖和使用哪个SCL包,这不是很可爱,但完全通用的形式(虽然可行)要复杂得多。