" - Pre-existing Ansible scripts can be reused to build Docker containers.
Using ansible playbooks from the dockerfile *still* allow this. - Generated Dockerfiles facilitate how docker detects changes to your containers (thus better exploiting Docker's caching mechanism for image trees). I think you'll be happy with what we have coming. Please hold on this one just a bit and we have some things to show later in the week :) - Your built images are now largely pre-configured, which helps reason about the behavior of your Docker containers at runtime." The above approach was still building them ahead of runtime. On Wed, Sep 24, 2014 at 3:48 PM, erewh0n <[email protected]> wrote: > Hi Michael, > > I can appreciate the approach you referenced above in the blog post, but > there is an alternative that I think is worth some discussion before moving > too far ahead with ansible/docker integration. The Ansible blog post is > basically recommending a post-deployment container configuration using > ansible (e.g. docker -> ansible). The alternative (re: > https://groups.google.com/forum/#!topic/ansible-project/H43hAKRtdhM) > would be to use Ansible to generate a Dockerfile (and related content, as > required). In other words: ansible -> docker. This has a number of > advantages: > > - Pre-existing Ansible scripts can be reused to build Docker > containers. > - Generated Dockerfiles facilitate how docker detects changes to your > containers (thus better exploiting Docker's caching mechanism for image > trees). > - Your built images are now largely pre-configured, which helps reason > about the behavior of your Docker containers at runtime. > > We're currently taking this approach in our shop, which started with > Ansible deployments to EC2 instances. We're transitioning to Docker > containers and have found the above to be reliable and a better "best > practice" for the reasons stated. > > Thoughts? > > > > On Wednesday, September 24, 2014 10:45:25 AM UTC-4, Michael DeHaan wrote: >> >> Hi, >> >> There's been a bit of discussion about the docker-image module recently. >> >> In particular, see Toshio's post and my follow up here on the devel list: >> >> https://groups.google.com/forum/#!topic/ansible-devel/ddlEteAgjIk >> >> I'm currently feeling that docker-image got accepted too early, the >> normal "docker" module is great, but Dockerfiles belong to be called from a >> build system. >> >> (A major reason for this is they also won't block ansible runs, and don't >> make sense in host loops so much either) >> >> Thoughts to the contrary would be welcome, but I'd suggest following - >> http://www.ansible.com/blog/2014/02/12/installing-and- >> building-docker-with-ansible for a primer on how to use playbooks inside >> a docker file - and we have some suprises coming out about that hopefully >> this week that will simplify further. >> >> Hope that helps! >> >> --Michael >> >> >> >> On Tue, Sep 23, 2014 at 11:54 PM, Christopher Lamey < >> [email protected]> wrote: >> >>> Hello, >>> >>> I'm trying to use Docker with Ansible to build a Docker image, but am >>> running into an issue. Any help would be appreciated. >>> >>> Basically, I want to put my docker files in my role's 'files' directory >>> and not have to specify a path for the docker_image task. Or, if I do have >>> to specify a path, I'd like it to be relative. >>> >>> Ansible -> v1.7.1 >>> Python ->2.7.6 >>> Docker-py -> 0.5.0 >>> >>> Relevant bit of my Ansible files look like this, following the Best >>> Practices section of the docs: >>> >>> roles/jenkins-slave/tasks/main.yml >>>> roles/jenkins-slave/files/Dockerfile >>> >>> >>> My task in that main.yml looks like this: >>> >>> - name: check or build jenkins-slave image >>>> docker_image: name=jenkins_java8 state=present >>> >>> >>> Note the lack of a path variable, which according to the docs is not a >>> required field. >>> >>> When I run ansible-playbook, which then runs that task, I get this: >>> >>> TASK: [jenkins-slave | check or build jenkins-slave image] >>>> ******************** >>>> fatal: [bucket1.closely.com] => failed to parse: SUDO-SUCCESS- >>>> pmqhkrvacsxgejgtwrskjhunvzyegvbj >>>> Traceback (most recent call last): >>>> File >>>> "/home/closely/.ansible/tmp/ansible-tmp-1411528307.53-162772271271910/docker_image", >>>> line 1598, in <module> >>>> main() >>>> File >>>> "/home/closely/.ansible/tmp/ansible-tmp-1411528307.53-162772271271910/docker_image", >>>> line 234, in main >>>> image_id = manager.build() >>>> File >>>> "/home/closely/.ansible/tmp/ansible-tmp-1411528307.53-162772271271910/docker_image", >>>> line 139, in build >>>> stream = self.client.build(self.path, tag=':'.join([self.name, >>>> self.tag]), nocache=self.nocache, rm=True, stream=True) >>>> File "/usr/local/lib/python2.7/dist-packages/docker/client.py", line >>>> 386, in build >>>> raise TypeError("Either path or fileobj needs to be provided.") >>>> TypeError: Either path or fileobj needs to be provided. >>>> >>>> >>>> >>>> FATAL: all hosts have already failed -- aborting >>> >>> >>> Specifying an absolute path for docker_image works, but that seems less >>> than ideal. I haven't found a relative path that works at all. >>> >>> I'm admittedly a n00b to Ansible, so it's very likely I'm missing >>> something very basic here. Any kind of debugging help would be useful too >>> - like how could I trap the actual issued command to see what it thinks the >>> path is? >>> >>> Thanks, >>> topher >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ansible Project" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> To view this discussion on the web visit https://groups.google.com/d/ >>> msgid/ansible-project/f47d3f96-31e2-48c2-a6a4- >>> ff79c80d89ef%40googlegroups.com >>> <https://groups.google.com/d/msgid/ansible-project/f47d3f96-31e2-48c2-a6a4-ff79c80d89ef%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > You received this message because you are subscribed to the Google Groups > "Ansible Project" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/ansible-project/6c11e4f4-7598-4788-bf00-b85e330b4ac1%40googlegroups.com > <https://groups.google.com/d/msgid/ansible-project/6c11e4f4-7598-4788-bf00-b85e330b4ac1%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgz1s-iHOUNbY3vF2-TorWp65-jaHYaFkX6DtM_Gtsz5ZA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
