I am working on an LXD transport plugin for the Puppet Bolt config management tool.
Draft PR is here https://github.com/puppetlabs/bolt/pull/2335
Warning: I am not a Ruby programmer. I merely am a fan of Puppet Bolt and LXD, and I think the concept of “system containers” benefits from a configuration management solution.
What a Bolt transport plugin allows is exposing the full range of bolt features in a way that feels like orchestrating VMs over SSH. Features that bolt provides:
- remote command execution
bolt command run -t $TARGET 'sudo /tmp/foo.sh
- upload and download files
- install packages
- orchestrate all of the above in ‘plans’ composed of granular ‘tasks’
The reason I think bolt is a good fit for LXD containers:
- Named “targets” in bolt map nicely to instances in lxd.
- The UID/GID configurations for
lxc file push
, andlxc exec
, have analogues inbolt file upload
andbolt command run
This is going to take me a while, because I am bad at Ruby. But if you use Puppet Bolt, follow the PR. I will try to remember to post an update here when it’s ready.