As with every language, Puppet DSL has some restrictions on the names we can give to its elements and the allowed characters.
As a general rule, for names of resources, variables, parameters, classes, and modules we can use only lowercase letters, numbers, and the underscore (_). Usage of hyphens (-) should be avoided (in some cases it is forbidden; in others it depends on Puppet's version).
We can use uppercase letters in variables names (but not at their beginning) and any character for resources' titles.
Names are case sensitive, and there are some reserved words that cannot be used as names for resources, classes, or defines or as unquoted word strings in the code, such as: