Gurus,

I'm trying to create a docker image from a Dockerfile in an ec2 instance. 
I'm able to create the ec2 instances and copy over the dockerfile fine. 
However, for *every* ec2 instance I fire up, it *always* fails the first 
time I try to build the docker image.

- name: Build the docker Nginx image
  docker_image:
    path: "{{ docker_nginx_dir }}"
    state: build
    name: "grid/nginx"

The ansible failure stack trace looks like:
failed: [54.*XX.XX.XX*] => {"failed": true, "parsed": false}
invalid output was: SUDO-SUCCESS-bdbbnpaupjsbudcxajoycrwmbmlehwux
Traceback (most recent call last):
  File 
"/home/ec2-user/.ansible/tmp/ansible-tmp-1414698075.43-175058707465136/docker_image",
 
line 1455, in 
<m                                                                    odule>
    main()
  File 
"/home/ec2-user/.ansible/tmp/ansible-tmp-1414698075.43-175058707465136/docker_image",
 
line 220, in 
mai                                                                    n
    image_id = manager.build()
  File 
"/home/ec2-user/.ansible/tmp/ansible-tmp-1414698075.43-175058707465136/docker_image",
 
line 143, in 
bui                                                                    ld
    chunk_json = json.loads(chunk)
  File "/usr/lib64/python2.6/json/__init__.py", line 307, in loads
    return _default_decoder.decode(s)
  File "/usr/lib64/python2.6/json/decoder.py", line 322, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 87 - line 1 column 52865 (char 87 - 
52865)
OpenSSH_6.2p2 Ubuntu-6ubuntu0.4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: auto-mux: Trying existing master
debug2: fd 3 setting O_NONBLOCK
debug2: mux_client_hello_exchange: master version 4
debug3: mux_client_forwards: request forwardings: 0 local, 0 remote
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_client_request_alive: done pid = 24845
debug3: mux_client_request_session: session request sent
debug1: mux_client_request_session: master session id: 2
debug3: mux_client_read_packet: read header failed: Broken pipe
debug2: Received exit status from master 0
Shared connection to 54.*XX.XX.XX* closed.

Looking at the docker log file on the ec2 instance, the only obvious error 
I always see is something like:

[f648bc68] -job log(start, 
aab655401a74e9e6bb098c1d62d31e44beb1c116eb530296f315392a82c2e3dc, 
4d76087678ee) = OK (0)
*[error] attach.go:186 attach: stdout: write unix @: broken pipe*
[error] attach.go:258 attach: job 1 returned error write unix @: broken 
pipe, aborting all jobs
write unix @: broken pipe
[f648bc68] -job build() = ERR (1)

I subsequently bumped up the timeout value thinking that the ssh client was 
timing out:

- name: Build the docker Nginx image
  docker_image:
    *timeout: 1200*
    path: "{{ docker_nginx_dir }}"
    state: build
    name: "grid/nginx"

But it fails much before this timeout. So I added a retry condition:

- name: Build the docker Nginx image
  docker_image:
    timeout: 1200
    path: "{{ docker_nginx_dir }}"
    state: build
    name: "grid/nginx"




*  register: build_image_result  until: not build_image_result|failed  
retries: 2  delay: 30*
This seems to consistently work - and I see that it always gets called 
twice - but I'm concerned as to why it would always need to. Any ideas?

Thanks!

More info if anyone needs it:
*EC2 setup*
- name: Setup AWS EC2 Instances - US-West-1
  ec2:
    instance_type: t2.micro
    image: "ami-41a7ea71"
    monitoring: no
    wait: yes
    group: microserver_security_group
    key_name: *mykey*
    instance_tags:
      Name: "MicroServer"
    count: 1
    region: "us-west-2"
  register: ec2west2

Docker install tasks:
- name: Update packages on the Amazon AMI
  yum: name=* state=latest
  when: ansible_distribution == 'Amazon'

- name: Install or Update Python on the Amazon AMI
  yum: name=python state=latest
  when: ansible_distribution == 'Amazon'

- name: Install or Update Python-pip on the Amazon AMI
  yum: name=python-pip state=latest
  when: ansible_distribution == 'Amazon'

- name: Install or Update Docker on the Amazon AMI
  yum: name=docker state=latest
  when: ansible_distribution == 'Amazon'

- name: Install or Update docker-py on all docker hosts
  pip: name=docker-py version=0.3.1
  # Had to delete /tmp/pip-build-root because pip would keep installing 
docker-py 0.5.3 as it was cached in this directory

- name: Start the docker service on the Amazon AMI
  service: name=docker state=restarted
  # Trying restarted because it always seems to fail the first time around
  when: ansible_distribution == 'Amazon'

Cheers.

-- 
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/fda1e638-e0fc-4b3a-9a9e-e36d7cf41c69%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to