Hiera vs Foreman

What is HIERA

Here is Puppet's very own descripton of Hiera:

" ...Hiera is Puppet’s built-in key/value data lookup system. By default, it uses simple YAML or JSON files, although you can extend it to work with almost any data source. ..."

" ...Hiera’s hierarchical lookups are built for a “defaults, with overrides” pattern. ..."

So in short, you can set defaults for parameters defined in your puppet modules, and override based on various conditions like hostname, FQDN, OS, location etc. This concept is pretty powerful and its widely used.

Pros:

  • based on configuration files. this is really good as those can live in a version control system like git.
  • can be managed through Infrastructure as Code approaches and automated through CI/CD testing and deployment.
  • Can use various back-ends in addition

Cons:

  • no reporting at all
  • lots of people are not happy to work with configuration files
  • if this is done manually, its quickly a big mess

 

What is Foreman

Here is what the Foreman developers say about Foreman:

"... Foreman is a complete lifecycle management tool for physical and virtual servers. We give system administrators the power to easily automate repetitive tasks, quickly deploy applications, and proactively manage servers, on-premise or in the cloud. ..."

" ... An external node classifier, hiera-like parameters, and reports monitoring for Puppet, Salt and Chef are included. Completely ready to tweak host groups in your data center. ..."

Pros:

  • based on back-end database and Ruby
  • provides far more options than just ENC:
    • Reporting:
      • Host monitoring
      • Facts
      • Trends
      • Auditing

    • Provisioning
    • LifeCycle Management
    • Puppet Management
    • Certificate Authority
    • User management
    • Multi-tenant capable
  • scalable
  • CLI
  • API
  • Hostgroups
  • Supports Passenger-based setup out of teh box
  • supports SSL out of teh box

Cons:

  • can be complex when doing a manual installation. However, the Forman installer takes care of all needs, so manual configuration is rarely required.

Facit

We believe Foreman is the much better choice as ENC.

All Puppet modules developed at ConfDroid are specifically designed for usage with Foreman as ENC.

While it is possible to use Hiera in addition to Foreman (or even other additional ENCs) , this quickly creates a mess where it is not easy to find the source of a conflicting parameter value. For that reason we'd recommend one or the other, in our case we are extremely happy with Foreman attached to an external backend database for good performance, i.e. MySQL or PostgreSQL.

Wanna learn how to deploy our Puppet modules? Check this out!

Leave a Reply