anchor.diff:      - '192.168.1.1'
       - '192.168.1.2'
   ```
  -10.10.0.0.yaml:
  +dc2.example.com.yaml:
   ```
   ---
   profile::base::dns:
  
positive.code: ```
  Then you can specify environment (network, node, DC) specific things in Hiera:
  
  192.168.1.0.yaml:
  ```
  ---
  profile::base::dns:
  
negative.code: 
  == Monolithic `modules` Directory
  
  Quite often I see repos where either people have `puppet module install`'d straight into the `modules` directory or they've downloaded a module and extracted it there. They then commit the whole repo including their own modules mixed in with upstream modules into source control.
  
  This pattern has a few problems, you don't know what is a locally developed module and what is an upstream module and there's no way of easily seeing what versions of modules are deployed. It also adds a lot of extra code to your Puppet repository.
  
  Although this way works and you know that your module versions are pinned, tools are out there that make it much easier to manage your Puppet modules such as http://librarian-puppet.com/[librarian-puppet] and https://github.com/puppetlabs/r10k[r10k].
  
  == Configuration Data in Code
  
  