5 ms·
I might be the only one that does this, but I like using ansible with docker. I use a Dockerfile for any long running tasks like installing dependencies so I c
by jgrowl 11y ago
I might be the only one that does this, but I like using ansible with docker.
I use a Dockerfile for any long running tasks like installing dependencies so I can take advantage of docker's cache. I then use ansible for fast running configuration like using a template file for filling out user specific configuration.
The biggest disadvantage to this is that you have to add ansible as a dependency in all of your containers, which stinks. I feel like it produces easier-to-read configuration.
Don't get me wrong, bash scripting is a great tool. I just try to avoid it whenever I can because I personally don't like writing bash scripts.
I think in the future there might be a best of both worlds approach if docker adds a caching api to where ansible could interact with it directly. There is also a docker connection plugin added in this release that could add some possibilities.
- matt_wulfeck 11y agoI don't think you're the only one. I ran saltstack with my containers for awhile, but it just created too many dependencies (as you notice yourself) and made the build process difficult. I find that if I keep things in bash the images become more "dumb" and therefore more portable. In lieu of a caching API you might find a package cache (apt-cacher-ng, squid, etc) will help speed up installs a lot. I found one image that was pulling down almost 5 GB with every build!
- alexandrerond 11y agoWriting ansible is faster and less error prone than a bash script. It's additionally better organized and maintainable. I use it for both immutable and manual deployments.
- nikolay 11y agoTrue... if you suck at Bash.
- michaelmrose 11y agoBash unequivocally sucks this is not to say it doesn't have its uses.
- nikolay 11y agoNo, it doesn't suck more than YAML-based scripting. I write complex Bash scripts daily - if I have to write the same in, let's say, Python, it would take longer, will possibly run slower, and will definitely take longer to test. Again, Bash is a nice tool, but you need to learn it well.
- Walkman 11y agohow do you test bash scripts?
- cakeface 11y agoI've used bats[1] in the past. I also recommend the command line shellcheck[2] for linting. [1] https://github.com/sstephenson/bats https://github.com/sstephenson/bats [2] https://github.com/koalaman/shellcheck https://github.com/koalaman/shellcheck
- alexandrerond 11y agoSorry but the question is not if you suck or not at bash. The issue is that there's always someone else that DOES suck at it, in unimaginable ways, and the regular guys like you and me have to deal with it. And there, Ansible helps!
- woadwarrior01 11y agoWriting bash scripts becomes a lot less error prone with shellcheck[1]. Syntastic for vim integrates well with it. [1]: https://github.com/koalaman/shellcheck https://github.com/koalaman/shellcheck
- stunthamsterio 11y agoIn terms of user configuration in containers, Tiller (https://github.com/markround/tiller https://github.com/markround/tiller) is very much worth a look.