I was in the market for a configuration management and remote execution tool. After looking around I didn’t really find any I liked and also supported SmartOS (and illumos).
It quickly became clear that I would need to do some legwork. I’m by no means a great programmer and my language selection is mostly limited to Turbo Pascal, C#, and Java supplemented with shell script (~bash really), perl (long ago), and Python.
My eye fell on SaltStack as it uses mostly Python, the community looked welcoming. I looked at some PR’s and the feedback happening on them was constructive. As a plus, Nahum Shalman already did some legwork to get SaltStack into the SmartOS global zone!
I spend a lot of time getting SmartOS support for managing zones/VMs usable.
- imgadm execution module got cleaned up and reworked
- vmadm execution module was written as a replacement for the existing ‘virt’ compatible module
- smartos state module was written that uses the imgadm and vmadm execution modules, this allows for management of zones/vms, images, and configuration.
I’ve been running these at home for about 3 months. They are pretty solid, I have a few things I want to improve in them but they are certainly usable. If you use them and find any issues, please open an issue on the saltstack github and tag me using @sjorge. I will try and fix them as soon as I can.
After this I started to manage my zones themselves hitting a few roadblocks along the way. Most of these changes also apply to illumos in general. (Sometimes to *BSD’s too)
- zpool execution module got reworked and now supports most actions the underlying cli command does.
- zfs execution module also got reworked
- zfs state module was writting that uses the rewritten zpool and zfs execution modules.
- zfs.scheduled_snapshot written to replace my usage of zsnapper in the global zone. It’s not perfect but gets the job done. (Use the schedule state to execute this state often.)
- mdata execution module to retrieve and set SmartOS metadata.
- fmadm execution module written for Solarish platforms.
- system execution module written for Solarish platforms.
- cron execution module fixed for Solarish platforms when setting jobs for a different user.
- shadow execution module improved with gen_password and del_password for Solarish platforms.
- timezone execution module fixed for Solarish platforms
- locale execution module fixed for Solarish platforms
- pkgin execution module now loads as default on SmartOS
- grains now show more info on SmartOS, including mdata
- grains now show correct info when running on SmartOS under LX branded emulation.
Some other small fixes here and there.
Overall SaltStack 2016.3 is working great for me on SmartOS and OmniOS. If you use these platforms, give it a spin!
How do I get this awesomeness? A pip install should work fine inside a zone. For the global zone I have a esky package hosted here.