Circular dependencies don't happen often in Puppet development, but when they do, they can be a major pain to troubleshoot. Circular dependencies happen when we create dependency chains with arrow indicators (->) or ordering metaparameters. In the following example, my three notify statements require each other in a circular chain - a -> b -> c -> a:
class profile::baseline::linux {# notify {'baseline': message => 'Applying the Linux Baseline!' } notify {'a': message => 'Resource A', require => Notify['b'] } notify {'b': message => 'Resource B', require => Notify['c'] } notify {'c': message => 'Resource C', require => Notify['a'] }}
When this catalog is applied on the node, we'll get a statement letting us know which ...