diff --git a/lib/puppet/provider/sysctl/augeas.rb b/lib/puppet/provider/sysctl/augeas.rb index be00a4b..d96c39a 100644 --- a/lib/puppet/provider/sysctl/augeas.rb +++ b/lib/puppet/provider/sysctl/augeas.rb @@ -14,7 +14,7 @@ optional_commands :sysctl => 'sysctl' resource_path do |resource| - "$target/#{resource[:name]}" + "$target/#{resource[:name]&.gsub('/', '\/')}" end def self.sysctl_set(key, value, silent=false) @@ -46,7 +46,7 @@ def self.collect_augeas_resources(res, entries, target='/etc/sysctl.conf', resou entries.each do |entry| next if resources.find{|x| x[:name] == entry} - value = aug.get("$target/#{entry}") + value = aug.get("$target/#{entry.gsub('/', '\/')}") if value resource = { @@ -59,11 +59,11 @@ def self.collect_augeas_resources(res, entries, target='/etc/sysctl.conf', resou # Only match comments immediately before the entry and prefixed with # the sysctl name - cmtnode = aug.match("$target/#comment[following-sibling::*[1][self::#{entry}]]") + cmtnode = aug.match("$target/#comment[following-sibling::*[1][self::#{entry.gsub('/', '\/')}]]") unless cmtnode.empty? comment = aug.get(cmtnode[0]) - if comment.match(/#{resource[:name]}:/) - resource[:comment] = comment.sub(/^#{resource[:name]}:\s*/, "") + if comment.match(/#{resource[:name]&.gsub('/', '\/')}:/) + resource[:comment] = comment.sub(/^#{resource[:name]&.gsub('/', '\/')}:\s*/, "") end end @@ -268,7 +268,7 @@ def live_value if aug.match(cmtnode).empty? aug.insert('$resource', "#comment", true) end - aug.set("$target/#comment[following-sibling::*[1][self::#{resource[:name]}]]", + aug.set("$target/#comment[following-sibling::*[1][self::#{resource[:name]&.gsub('/', '\/')}]]", "#{resource[:name]}: #{resource[:comment]}") end end