Kun käytetään r10k:ta ja Foremania yhdessä on uusien luokkien tuonti kaksivaiheinen prosessi. Oletetaan vaikka, että "production" environmentiin on luotu uusi luokka, esim. "role::ipa_server". Ilman Foremania riittäisi tuoda muutos puppetmasterille r10k:lla:
$ r10k deploy environment production -vp
Foreman ei kuitenkaan vielä tiedä uudesta luokasta mitään:
$ hammer puppet-class list --environment production|grep ipa_server
Foremanin komponentti, joka hakee Puppetmasterilta uudet luokat on nimeltään "Smart proxy", joka tunnetaan myös nimellä "foreman-proxy". Uusimpien Puppetin versioiden kanssa se hakee luokat Puppetserverin API:a käyttäen. Luokat saa päivitettyä komentoriviltä melko triviaalisti:
$ hammer proxy import-classes --id 1
Result:
Successfully updated environment and puppetclasses from the on-disk puppet installation
Changed environments:
1) production
New classes:
role::ipa_server
Yllä "id" viittaa smart proxyyn, jolta puppet-luokat päivitetään (ks. "hammer proxy list").
Edellä mainittu komento ei kuitenkaan tee mitään jos Puppetserverin environment class cache on päällä, koska smart proxy saa API-kyselyn tehdessään vanhentuneen listan Puppet-luokista. Ongelman voi korjata poistamalla ko. ominaisuuden käytöstä tiedostosta /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf:
# (optional) enable or disable environment class cache
environment-class-cache-enabled: false
Tämän jälkeen smart proxyn logeihin ilmestyykin varoitus:
2019-08-08T12:12:21 ed5f29fe [W] Puppet server classes cache is disabled, classes retrieval can be slow.
Tämä ei kuitenkaan ole mikään ongelma ainakaan pienehköissä ympäristöissä ja vähentää huomattavasti harmaiden hiuksien määrää tehtäessä nopeaa Puppet-koodin kehitystä.