Hi all,
I've been trying the docker module and I'm facing permission issues.
My use case is the following:
- I installed ansible (ubuntu package 1.7.1), python pip (ubuntu package), docker-py (pip package)
- I created a playbook with a simple task based on the docker module. I want to create my container with ansible and provision it with ansible. I don't want any ansible code to run inside my container.
I get this error:
msg: ConnectionError(MaxRetryError("UnixHTTPConnectionPool(host='localhost', port=None): Max retries exceeded with url: /run/docker.sock/v1.12/containers/json?all=1&limit=-1&trunc_cmd=1&size=0 (Caused by <class 'socket.error'>: [Errno 13] Permission denied)",),)
Intent : create one container on localhost via ansible, (maybe the playbook does not understand it the same way)
Pre-requisites: docker server is already up and running on localhost
I would be very grateful if anyone could explain me what I'm doing wrong because I must be doing somthing wrong as my script is so trivial.
Thank you for your help.
Regards,
Louis
Below various additional information (console outputs + playbook)
python version
$ python --version
Python 2.7.6
docker version
$ docker --version
Docker version 1.2.0, build fa7b24f
pip list
$ pip list
ansible (1.7.1)
apt-xapian-index (0.45)
argparse (1.2.1)
backports.ssl-match-hostname (3.4.0.2)
chardet (2.0.1)
colorama (0.2.5)
command-not-found (0.3)
debtagshw (0.1)
defer (1.0.6)
dirspec (13.10)
docker-py (0.5.0)
dopy (0.2.3)
html5lib (0.999)
httplib2 (0.8)
Jinja2 (2.7.2)
lxml (3.3.3)
MarkupSafe (0.18)
oauthlib (0.6.1)
oneconf (0.3.7)
PAM (0.4.2)
paramiko (1.10.1)
pexpect (3.1)
Pillow (2.3.0)
pip (1.5.4)
piston-mini-client (0.7.5)
psutil (1.2.1)
pycrypto (2.6.1)
pycups (1.9.66)
pycurl (7.19.3)
pygobject (3.12.0)
pyOpenSSL (0.13)
pyserial (2.6)
pysmbc (1.0.14.1)
python-apt (0.9.3.5)
python-debian (0.1.21-nmu2ubuntu2)
pyxdg (0.25)
PyYAML (3.10)
reportlab (3.0)
requests (2.3.0)
sessioninstaller (0.0.0)
setuptools (3.3)
six (1.5.2)
software-center-aptd-plugins (0.0.0)
Twisted-Core (13.2.0)
Twisted-Web (13.2.0)
urllib3 (1.7.1)
websocket-client (0.18.0)
wsgiref (0.1.2)
zope.interface (4.0.5)
playbook
---
- hosts: localhost
vars:
- image: "ubuntu:14.04"
- host_name: "risk-data"
tasks:
- name: "bring up container for {{ host_name }} from {{ image }}"
docker: hostname="{{ host_name }}" image="{{ image }}" name="{{ host_name }}" expose=22
- name: "wait for {{ host_name }}'s sshd to come up"
wait_for: host="{{ host_name }}" port=22 state=started
- name: "dump facts"
debug: msg="Container {{ item.key }}"
with_items: docker_containers
- name: "add {{ host_name }} to inventory"
add_host: name="{{ host_name }}" groups=risk ansible_ssh_host="{{ item.NetworkSettings.IPAddress }}" ansible_ssh_port=22
with_items: docker_containers
playbook command line
$ ansible-playbook playbook.yml
PLAY [localhost] **************************************************************
GATHERING FACTS ***************************************************************
ok: [localhost]
TASK: [bring up container for risk-data from ubuntu:14.04] ********************
failed: [localhost] => {"changed": false, "failed": true}
msg: ConnectionError(MaxRetryError("UnixHTTPConnectionPool(host='localhost', port=None): Max retries exceeded with url: /run/docker.sock/v1.12/containers/json?all=1&limit=-1&trunc_cmd=1&size=0 (Caused by <class 'socket.error'>: [Errno 13] Permission denied)",),)
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/home/louis/playbook.retry
localhost : ok=1 changed=0 unreachable=0 failed=1