I can either write

include '::ntp'

or I can write

class { '::ntp':}

What is the difference between them, or do I need both?

2 Answers 2


There are differences, here are two big ones:

Using include allows multiple declarations of a class. The class declaration can only be used once or you'll see a duplicate resource declaration error.

include will use external data, e.g. hiera, for parameters. Declaring class allows you to specify the parameters.

See https://puppet.com/docs/puppet/latest/lang_classes.html#the-include-function


Include is to tell puppet to apply the class "ntp" to a node and class is to declare the class, the behavior of this class (like ensure file, package, user etc...)

  • class defines a class, while include declares (i.e. uses) it. Commented Jan 17, 2017 at 16:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .