I had worked on integrating snapshots with Salt with Pablo just some weeks before that and I was waiting for the openSUSE Conference to get the chance to show Thomas what we had done in order to get feedback and figure out next steps.
A few days before the Conference Redhat did a press release that caught my attention: a framework to build container images with Ansible. Yes, that makes a lot of sense. My head started immediately to think all day long about the challenges to build something like that: Installing the configuration management tool without leaving it there, etc. I got curious and started poking at the README.
On one hand, it was not what I was expecting (well, at least, for a Press Release or Tech Preview). It still “generated” Dockerfiles, relied on Ansible to be installed in some way, wich was “templated” into Dockerfiles, and it was of course a new tool.
On the other hand, it was pure inspiration: I remembered why I like Salt so much. I knew that with Salt I wouldn’t need to build a “new tool”. I’d only need to write a module and connect some pieces, and that makes my feature distributed, accessible, deployable, etc. I’d not need to interact with Docker directly, but only with the Salt execution module for it. The best part: I had a Hackweek project!.
I used the chance that Thomas was at the openSUSE Conference to ask him some details about
salt-thin and explain him rough ideas.
The feature went more or less like expected:
After tackling the problems one by one, you can factor some stuff out:
dockerng.build_slsneeds to apply state on a new container and commit it, why not allow to call state on a running container?.
grains.itemson the container, why not allow to call any module in a container?.
On Friday I was able to give the following Lightning Talk:
The result is:
salt://tree modules only needing Python on the base image. And yes, you can consume pillar data.
I prepared a pull request, which had the best reception I ever got on a pull request:
There are some details to polish and I hope it can be merged soon.