I really wanted to use SaltStack to configure my home Linux router. It would be wonderful to manage that infrastructure as code. Unfortunately, it does not seem tenable for me.
Issues at Home
Does not support Python 3.8+ on macOS
My goal was to be able to push configurations using
salt-ssh from my macOS laptop. SaltStack claims macOS is supported. Salt Project (emphasis added):
Salt is tested and packaged to run on CentOS, Debian, RHEL, Ubuntu, MacOS, Windows, and more.
I originally installed SaltStack via homebrew, but had to switch to a Python 3.7 virtual environment due to:
2020-06-21: [BUG] AttributeError: 'Process' object has no attribute '_args_for_getstate' · Issue #57742 · saltstack/salt
2022-01-09: [BUG] salt-ssh fails due to attempting to pickle _thread._local object · Issue #61435 · saltstack/salt
These issues have exists since the release of Python 3.8 on
Cannot use gitfs with salt-ssh
With SaltStack appearing to work, I wanted to use SaltStack Formulas. Unfortunately, that option has been unsupported since 2005:
I tried to symlink git submodules in, but I encountered the same error.
Docker images unmaintained
I thought I might have fewer issues if I might moved my use case closer to the SaltStack mainstream by using a SaltStack docker image. SaltStack
3004 was release 145 days ago on
2021-10-18. Unfortunately, as of today (
2022-03-12--still true as of
2022-05-03), there is not yet a
3004 docker image. saltstack/salt - Docker Image | Docker Hub:
Supported tags and respective
I realize I could create my own docker image, but I encountered this when my capacity for workarounds was already at its limit.
Issues at Work
Lack of Open Community
In learning and using SaltStack, I've frequently come up against a terrible lack of examples and documentation of SaltStack in use. It seems to be getting worse as the few examples I did find are becoming outdated.
At work, I've tried to use SaltStack in the open so others can build on my work. I've blogged about it previously (SaltStack tag - Timid Robot). So far, engagement has been nonexistent.
I spent years working with Puppet, which had a much stronger community.
Incomplete Migration from Python 2.7 to Python 3
boto_rds for provisioning:
salt-ssh for the initial setup of newly provisioned EC2 instances:
The backlog contains many ancient and higher severity issues that deal with the functionality I am interested in (ex.
I really wanted to love SaltStack. I love Python. I love a lot of the design decisions made by SaltStack. It seems like the core use case (avoiding
salt-ssh, orchestration, and provisioning) is viable. SaltStack might work very very well for you. I respect the developers (especially the volunteer developers) who are working on a great product. Unfortunately, it doesn't feel like SaltStack will work well for me.
I expect that next I'll try Ansible at home:
2022-03-16: Gareth J. Greenaway provided a good response to this post on Twitter.
2022-05-03: Not long after writing this post, my firewall's RAM was damaged by a blackout and I had to rebuild it. I was able to do fairly quickly, even though I was learning Ansible at the same time. So far, I've really enjoyed Ansible. My only complaint is that it is slow (though fast enough for my needs).
2022 May 03:
- Added recheck date to Docker images unmaintained section
- Added Response section
- Added Ansible Success section
Copyright © 2022 Timid Robot Zehta. This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.