Jotkin Puppet ENC:t (External Node Classifier), hyvänä esimerkkinä Foreman, eivät tue määriteltyjen resurssien (Defined Resource Types) käyttöä suoraan, vaan kaikki konfiguraatiot pitää sisällyttää Puppet-luokkiin.
Myös Hieran kanssa määritellyt resurssit ovat hieman ongelmallisia, koska ne pitää erikseen luoda create_resources funktiolla. Eräs ratkaisu on määrittää kaikki create_resources -funktiot site.pp-tiedostossa (sovellettu täältä):
create_resources('mysqldump::backup',hiera('mysqldump_backups', {}))
Tämän lähestymistavan ongelma on se, että uudet määritellyt resurssit pitää muistaa lisätä site.pp-tiedostoon.
Yksinkertaisempi ja myös Foremanin kanssa toimiva ratkaisu on luoda määritellyt resurssit suoraan Puppet-moduulin pääluokasta (sovellettu täältä):
class mysqldump ( $backups = {} ) { create_resources('mysqldump::backup', $backups) }
Yllä mysqldump-luokalla on hash-tyyppinen parameteri $backups, jossa määritetyt mysqldump::backup -resurssit luodaan create_resources -funktiolla. Aaltosulkeet parametrin oletusarvona mahdollistavat parametrin $backups määrittelemättä jättämisen ja kertovat Puppetille, että kyseessä on nimenomaan hash-tyyppinen parametri. Noodin yaml-tiedostossa $backups -parametri määriteltäisiin tähän tapaan:
--- classes: - mysqldump mysqldump::backups: eka: databases: - 'eka' toka: databases: - 'toka'
Tämä ratkaisu toimii tietenkin toimii vain, jos noodille on lisätty hash-parametrin sisältävä luokka (yllä mysqldump). Luokkien lisääminen Hierasta onnistuu vain, jos site.pp -tiedostossa on seuraava rivi:
hiera_include('classes')