Puppet is declarative in nature. The presence of imperative statements (such as 'exec') defies the purpose of the language. An abstraction containing numerous imperative statements suffers from imperative abstraction smell.
The following set of tools detects this smell: Puppeteer(for Puppet)
T. Sharma, M. Fragkoulis, D. Spinellis, “Does Your Configuration Code Smell?”. MSR 2016, pp. 189–200.
All rights reserved (c) Tushar Sharma 2017-23.