gpt4 book ai didi

mongodb - 使用 Chef 配方修改配置文件中的一行

转载 作者:可可西里 更新时间:2023-11-01 09:16:49 27 4
gpt4 key购买 nike

我正在尝试使用 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 = Chef::Util::Editor.new(<lines>) 

哪里<lines> = 文件路径、= Chef::Util::FileEdit.new() 和 = '测试字符串',但似乎没有任何效果。

有没有人使用过 Chef::Util::Editor?或者更好的解决方案?

谢谢

最佳答案

我从来不知道如何使用 Chef 修改配置文件中的一行,但这是我最终用来禁用 MongoDB 的 THP 设置的方法。

秘诀:安装 MongoDB

# Install MongoDB on Amazon Linux
# http://docs.mongodb.org/manual/tutorial/install-mongodb-on-amazon/

# 1: configure the package management system (yum)

# 2: install mongodb

# 3: configure mongodb settings

# 3.A: give mongod permission to files
# data & log directories (everything in /srv/mongodb)
# http://stackoverflow.com/questions/7948789/mongodb-mongod-complains-that-there-is-no-data-db-folder
execute "mongod_permission" do
command "sudo chown -R mongod:mongod /srv/mongodb"
#command "sudo chown mongod:mongod /var/run/mongodb/mongod.pid"
#command "sudo chown -R $USER /srv/mongodb"
end

# 3.B: edit Transparent Huge Pages (THP) Settings
# get rid of mongod startup warning
# http://docs.mongodb.org/manual/reference/transparent-huge-pages/#transparent-huge-pages-thp-settings

# 3.B.1: disable
execute "disable_thp_khugepaged_defrag" do
command "echo 0 | sudo tee /sys/kernel/mm/transparent_hugepage/khugepaged/defrag" # different b/c file doesn't have options list
end
execute "disable_thp_hugepage_defrag" do
command "echo 'never > /sys/kernel/mm/transparent_hugepage/defrag' | sudo tee --append /sys/kernel/mm/transparent_hugepage/defrag"
end
execute "disable_thp_hugepage_enables" do
command "echo 'never > /sys/kernel/mm/transparent_hugepage/enabled' | sudo tee --append /sys/kernel/mm/transparent_hugepage/enabled"
end

# 3.B.2: verify disabled on reboot
template "/etc/rc.local" do
source "init-rc.local.erb"
owner 'root'
group 'root'
mode '0775'
end

# 4: use upstart & monit to keep mongod alive

模板:init-rc.local.erb

touch /var/lock/subsys/local

if test -f /sys/kernel/mm/transparent_hugepage/khugepaged/defrag; then
echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

关于mongodb - 使用 Chef 配方修改配置文件中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955695/

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