我正在使用以下代码禁用使用puppet
启用THPfile_line { 'disable-THP-enabled':
ensure => present,
path => '/sys/kernel/mm/transparent_hugepage/enabled',
line => 'never',
}
但是我收到以下错误消息:
Error: Could not set 'present' on ensure: Invalid argument - /sys/kernel/mm/transparent_hugepage/enabled at 43:/home/Sandeep_Kanabar/devops/puppet/modules/profile/manifests/setup_os_params.pp
Error: Could not set 'present' on ensure: Invalid argument - /sys/kernel/mm/transparent_hugepage/enabled at 43:/home/Sandeep_Kanabar/devops/puppet/modules/profile/manifests/setup_os_params.pp
Wrapped exception:
Invalid argument - /sys/kernel/mm/transparent_hugepage/enabled
Error: /Stage[main]/Profile::Setup_os_params/File_line[disable-THP-enabled]/ensure: change from absent to present failed: Could not set 'present' on ensure: Invalid argument - /sys/kernel/mm/transparent_hugepage/enabled at 43:/home/Sandeep_Kanabar/devops/puppet/modules/profile/manifests/setup_os_params.pp
仅在实际启用THP时才会发生这种情况。例如
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never.
如果禁用THP,则不会发生此错误。例如
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
将swappiness设置为0时,类似的木偶代码可以正常工作。
file_line { 'set-swappiness':
ensure => present,
path => '/proc/sys/vm/swappiness',
line => '0',
}
有人可以指出我可能会遗漏或做错什么吗?我正在使用独立的木偶版本3.8.6。这是CentOS 7.2上的无主设置
答案 0 :(得分:0)
我认为问题是file_line的工作方式与sysfs文件系统的工作方式不兼容。例如,您无法使用文本编辑器真正打开所述文件并尝试将修改写入其中,但您可以编写一个完全替换旧内容的全新文件。
也许这会奏效:
file {' / sys / kernel / mm / transparent_hugepage / enabled': content => '从未&#39 ;, }
或使用puppet-sysfs模块..
答案 1 :(得分:0)
答案 2 :(得分:0)
除非在资源文件中使用,否则使用的想法确实失败了。但!可以使用exec中的onlyif来实现。
exec { 'thp-status':
command => "echo ${thp_status} > /sys/kernel/mm/transparent_hugepage/enabled",
provider => shell,
onlyif => "egrep -q '\\[${thp_status}\\]' /sys/kernel/mm/transparent_hugepage/enabled || echo THP-enabled should be corrected",
}
实际上,没有onlyif就能做到
exec { 'thp-status':
command => "egrep -q '\\[${thp_status}\\]' /sys/kernel/mm/transparent_hugepage/enabled || echo ${thp_status} > /sys/kernel/mm/transparent_hugepage/enabled",
provider => shell,
}