Selective service management

I am trying to achieve selective service management with puppet.
- be able to tell puppet to manage state of the services only 'once' - after first successful run no further service management should occur
- be able to put system into 'maintenance' mode - no service management until further 'notice'

There are two approaches I can think of:
1) Include service definition based on custom fact, change custom fact value via file definition with pre-defined content and replace = false attribute.
2) Custom service wrapper - change path to start/stop/status scripts to a custom service wrapper