【发布时间】:2016-07-07 09:14:51
【问题描述】:
我正在尝试使用 Chef Recipe 自动禁用 MongoDB 的透明大页面 (THP) 设置。
此处解释了 THP 设置:MongoDocs THP Settings
我正在尝试通过编辑“/etc/grub.conf”中的 grub 配置文件来遵循第一个选项“在启动时配置(首选)”
我需要做的就是将“transparent_hugepage=never”附加到以“kernel”开头的现有行的末尾
我知道我可以用Chef::Util::FileEdit 替换一行,使用如下代码:
ruby_block "replace_line" do
block do
file = Chef::Util::FileEdit.new("/etc/grub.conf")
file.search_file_replace_line("/kernel/", "kernel <kernel path> <kernel options> transparent_hugepage=never")
file.write_file
end
end
但我需要保留现有的内核路径和内核选项。
我尝试过使用Chef::Util::Editor,但未能成功初始化构造函数。 Chef::Util::FileEdit 使用文件路径初始化(如上所述),但 ruby 文档说 Chef::Util::Editor 使用“lines”初始化。我试过了
lines = Chef::Util::Editor.new(<lines>)
其中<lines> = 文件路径、= Chef::Util::FileEdit.new() 和 = 'test string',但似乎没有任何效果。
有人对 Chef::Util::Editor 有任何经验吗?还是更好的解决方案?
谢谢
【问题讨论】:
-
文件是静态的,还是有其他可能是动态的配置?如果它们的文件是静态的,那么您可以将配置文件添加到说明书的文件中,然后使用 cookbook_file 指令替换以前的配置文件。
-
自从这个问题被打开以来已经有一段时间了。你有想过解决办法吗?
-
@spuder 我从来没有想过如何用厨师修改配置文件中的一行。希望我是一名主厨,但我很确定我仍然只是在做菜坑。如果您尝试禁用 MongoDB 的 THP 设置,我发布了我最终所做的作为答案。
标签: mongodb chef-infra