{"record":{"id":"a43e2d4184af0f41","repo":"puppetlabs/puppet","slug":"invalid-value-value-for-boolean-parameter","errorCode":null,"errorMessage":"Invalid value '%{value}' for boolean parameter: %{name}","messagePattern":"Invalid value '%(.+?)' for boolean parameter: %(.+?)","errorType":"validation","errorClass":"Puppet::Settings::ValidationError","httpStatus":null,"severity":"error","filePath":"lib/puppet/settings/boolean_setting.rb","lineNumber":27,"sourceCode":"    else\n      [[\"--#{name}\", GetoptLong::NO_ARGUMENT], [\"--no-#{name}\", GetoptLong::NO_ARGUMENT]]\n    end\n  end\n\n  def optparse_args\n    if short\n      [\"--[no-]#{name}\", \"-#{short}\", desc, :NONE]\n    else\n      [\"--[no-]#{name}\", desc, :NONE]\n    end\n  end\n\n  def munge(value)\n    case value\n    when true, \"true\"; true\n    when false, \"false\"; false\n    else\n      raise Puppet::Settings::ValidationError, _(\"Invalid value '%{value}' for boolean parameter: %{name}\") % { value: value.inspect, name: @name }\n    end\n  end\n\n  def type\n    :boolean\n  end\nend\n","sourceCodeStart":9,"sourceCodeEnd":35,"githubUrl":"https://github.com/puppetlabs/puppet/blob/e227c27540975c25aa22d533a52424a9d2fc886a/lib/puppet/settings/boolean_setting.rb#L9-L35","documentation":"Puppet::Settings::BooleanSetting#munge accepts exactly true, 'true', false, 'false'; any other value — integers 1/0, 'yes'/'no'/'on'/'off', symbols, nil — raises Puppet::Settings::ValidationError naming the parameter. This is the read-time normalization for every boolean setting (report, strict_variables, ...).","triggerScenarios":"puppet.conf `report = yes` or `report = 1`; YAML-generated config injecting real integers/booleans from a template that formats them wrongly; CLI `--report on`; ERB writing <%= value %> where value is an unquoted integer.","commonSituations":"Config management templating puppet.conf with systemd/nginx-style truthiness ('yes'/'on'/'1'); heterogeneous sources where one writer emits 0/1; Ansible/Hiera variables typed as integers.","solutions":["Use the literals true or false (unquoted in puppet.conf) for boolean settings.","Coerce in your template/wrapper: value ? 'true' : 'false' before writing config.","Audit generated puppet.conf files for yes/no/on/off/1/0 in boolean keys."],"exampleFix":"# before (puppet.conf [agent])\nreport = yes\n\n# after\nreport = true","handlingStrategy":"type-guard","validationCode":"raise Puppet::Settings::ValidationError, \"expected true/false, got #{v.inspect}\" unless [true, 'true', false, 'false'].include?(v)\nPuppet.settings[:report] = v","typeGuard":"boolish = ->(v) { [true, 'true', false, 'false'].include?(v) }","tryCatchPattern":"begin\n  Puppet.settings[:report] = v\nrescue Puppet::Settings::ValidationError => e\n  raise unless e.message.include?('boolean parameter')\n  Puppet.settings[:report] = %w[true 1 yes on].include?(v.to_s.downcase) # normalize then retry\nend","preventionTips":["Template boolean settings with value ? 'true' : 'false'","Reject yes/no/on/off/1/0 at the config-generation layer","Unquoted literal true/false is the only safe spelling in puppet.conf"],"tags":["puppet","settings","boolean","munge","validation-error"],"backgroundTag":"invalid-boolean-config-value","analyzedSha":"e227c27540975c25aa22d533a52424a9d2fc886a","analyzedAt":"2026-08-21T20:49:46.650Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}