Is Puppet Apply the correct way to run a "one time", on-demand action?
We are relatively new users of Puppet. We are using Hiera to do our node classification to take care of installing software and getting the nodes in the proper end state. We would also like to use Puppet to manage periodic, user requested actions on selected nodes. For example, an ad hoc backup of a node and restore to another node. The UI for asking for the parameters will be taken care of via another Orchestration layer and I know I can get the parameters, I'm just interested in the best way to structure this in Puppet.
I've seen lots of suggestions for "run once" questions that involve just adding your module to the node and using the existence or contents of various gate files to control whether an exec in that module has run already or not. I don't really like this approach as I don't like the idea of Puppet continually "trying" to backup and copy the database and only being prevented by the presence of some file.
It seems like Puppet Apply might be a better way. Assuming I have a script that will do the backup and copy action, I could use my node classification to ensure that the script is actually on the node but then invoke "puppet apply ..." locally on the node to actually apply the module/run the script on user demand.
Does that make sense? Am I missing anything in this approach?
[Edit: Never mind. Upon further reflection, this is silly. If I'm going to do an SSH to the box to run "puppet apply <module>" to run the script, I might as well just run the script myself. ]