puppetlabs/bolt

Support tags on apply blocks

Opened this issue · 0 comments

Use Case

Tags are a core feature of Puppet. I use them to filter resources in a catalog to optimize long builds.

Describe the Solution You Would Like

Both bolt apply and the apply function take parameters to enable noop mode. It should be extended to take a tags parameter.

Describe Alternatives You've Considered

I considered refactoring my code to eliminate tags, but my use case doesn't support that. For workarounds, I tried setting the global tags setting like:

run_command('puppet config set tags foo', $target)
apply($target) { include module }
run_command('puppet config delete tags', $target)

and though I could see the tags = foo setting present on the target's main puppet.conf, it did not take effect during the apply block. A "working" but ugly workaround was to configure tags directly in the interpreter:

inventory.yaml

config:
  podman:
    interpreters:
      rb: ['/usr/bin/ruby', '-r', 'puppet', '-e', 'Puppet[:tags] = File.open("/.apply_tags", &:gets) if File.exist? "/.apply_tags"; load ARGV.shift']
run_command('sh -c "echo foo > /.apply_tags"', $target, 'Set Puppet tags')
apply($target) { include module }
run_command('rm /.apply_tags', $target, 'Clear Puppet tags')