@mpdehaan: Are you saying you see Ansible being called from Dockerfiles,
as from a RUN instruction? What does this offer above using Dockerfile
instructions directly? Since Docker interprets each instruction as a layer,
it seems you would lose the benefits of layer reuse if you called out to
Ansible for all your configuration.
I mean this:
http://www.ansible.com/blog/2014/02/12/installing-and-building-docker-with-ansible
What does Ansible offer over automating your entire infrastructure with
just bash scripts? Exactly that.
No one is really using much more than the base image support in docker for
"layers". So deploy Ubuntu, apply Ansible for config.
If you want to deploy ansible on top of other images, use this too.
By no means does running Ansible instead of Dockerfiles having bash in them
change the equation.
I had considered Ansible to be a good tool for a Docker deployment on the
scale of a handful of hosts, fixed in number, and a few dozen containers. I
don't think of this small number of container hosts as a cloud/PaaS. With
respect to the containers in this context, I think of them more as
processes than as VMs, where Docker is desired to provide packaging and
isolation.
Doesn't matter - they are actually really small VMs/jails and can get
arbitrarily large. Let's ignore the hype about whether it's a VM or not,
it's serving the same purpose, but optimized a bit more towards running
many containers oversubscribed rather than providing more complete
isolation. Different tradeoff.
In this context, I think the manual placement and linking that the current
Ansible Docker module provides is a good fit. Given that Ansible should
already be in the toolkit for container host base configuration, it seems
logical to also use it for simple container orchestration.
I can see why some people don't want to contend with learning other layers
of management software. I'm also not a big fan of continuing to provide
glue to make that easier, as in the end, it's going to look inferior to the
real thing.
For the use case I described, I perceive some of the other engines such as
Fleet, Flynn, Deis, Centurion to be too heavyweight - I don't think small
deployments require dynamic placement, automatic container migration, or
service discovery that tools like these are trying to provide. I think
growing in to such tools when the cluster reaches a certain size is wise,
rather than taking on all that complexity up front just to run a relatively
small number of containers.
I guess that's where our levels of interest differ - Ansible is used by a
lot of people with home setups and low-load startups, but it's really
designed for industry deployments and so forth, so we don't want to
advocate avenues that cause problems later.
As such, I'm merely cautioning that manually placing Docker-containers is a
very "pre-cloud" way to do things, akin to keeping a spreadsheet of where
your virtual machines run.
When something is too heavyweight, the question is really what does that
mean? Is it something someone doesn't want to learn, does it consume too
many resources, or is it something someone doesn't want to manage?
And then the question really arises as to who is asking and for what
purpose. In many small shops, this may be in fact totally ok. I'm just
saying it doesn't scale, and as such, is a bit less interesting to me
trying to build that out.
I guess what I'm saying is I don't want to be a baby-cloud and all the
extra bolts and underpinnings it would require to make that viable, as
pretty soon people wonder about storage and monitoring and other bits - and
better placement engines - how to migrate systems, etc.
I'd rather our provisioning modules leverage other tools that already do
these things.
And I do recognize many of these are still too new and evolving yet.