|
1 | 1 | ---
|
2 | 2 |
|
3 |
| -- name: install inotify-tools |
4 |
| - apt: pkg=inotify-tools force=yes |
5 |
| - when: docker_uses_upstart |
| 3 | +# The role knows how to write docker_rotate commands for the version 3.0 API, not for earlier |
| 4 | +# versions. |
| 5 | +- name: check minimum docker_rotate version |
| 6 | + fail: msg="specified docker_rotate version is {{ docker_rotate_version }}, must be at least 3.0" |
| 7 | + when: "{{ docker_rotate_version | version_compare('3.0', '<') }}" |
6 | 8 |
|
7 |
| -- name: install docker-py |
8 |
| - pip: name=docker-py version="{{ docker_py_version }}" |
| 9 | +# Note escaping required here - we need to pass "{{ .Server.Version }}" to Docker without it |
| 10 | +# being escaped by Ansible. However, normal ways of escaping it will result in the command |
| 11 | +# containing that string, and when we register the result the "cmd" field on the result will also |
| 12 | +# contain it. So next time any kind of templating command is run, Ansible will try to resolve |
| 13 | +# template expressions in all of its variables, including that one, and will show an error. |
| 14 | +# Hence this workaround with shell. |
| 15 | +# In Ansible 2.0, they added the "!unsafe" keyword, which may provide a cleaner way to resolve |
| 16 | +# this. |
| 17 | +- name: Verify that docker is installed and determine installed version |
| 18 | + shell: 'B="{" && docker version -f "$B$B .Server.Version }}"' |
| 19 | + changed_when: False |
| 20 | + always_run: True |
| 21 | + register: docker_version_result |
9 | 22 |
|
10 |
| -- name: install docker-rotate |
11 |
| - pip: name=dockerrotate version="{{ docker_rotate_version}}" |
| 23 | +- name: store installed docker version |
| 24 | + set_fact: |
| 25 | + installed_docker_version: "{{ docker_version_result.stdout }}" |
| 26 | + |
| 27 | +# install Python packages with pip. These are all included in the same requirements file, so that |
| 28 | +# we can let Pip sort out any inconsistencies between required versions. |
| 29 | +- name: manage python requirements file |
| 30 | + template: src=requirements.txt.j2 dest=/etc/docker-python.requirements.txt |
| 31 | + |
| 32 | +# note state=latest here; if you want a fixed version, specify it. |
| 33 | +- name: ensure python reqirements are installed |
| 34 | + pip: state=latest requirements=/etc/docker-python.requirements.txt |
12 | 35 |
|
13 | 36 | - name: install docker-rotate cron script
|
14 |
| - template: src=docker-rotate dest=/etc/cron.daily/ mode=755 |
| 37 | + template: src=docker-rotate.j2 dest=/etc/cron.daily/docker-rotate mode=755 |
15 | 38 |
|
16 | 39 | - name: push logrotate config file for docker container json logs
|
17 | 40 | template: src=logrotate.conf.j2 dest=/etc/logrotate.d/docker
|
| 41 | + when: "{{ installed_docker_version | version_compare('1.8', '<') }}" |
| 42 | + |
| 43 | +- name: make sure docker logrotate config is removed |
| 44 | + file: state=absent dest=/etc/logrotate.d/docker |
| 45 | + when: "{{ installed_docker_version | version_compare('1.8', '>=') }}" |
18 | 46 |
|
19 | 47 | - name: install docker zombie volumes cleanup cron script
|
20 | 48 | copy: src=clear-zombie-docker-data-dirs dest=/etc/cron.daily/ mode=755
|
21 | 49 |
|
22 | 50 | - name: push docker configuration
|
23 | 51 | template: src=docker.j2 dest=/etc/default/docker
|
| 52 | + register: docker_config_result |
24 | 53 | notify: restart docker
|
25 | 54 |
|
26 |
| -- name: install docker-compose |
27 |
| - pip: |
28 |
| - name: docker-compose |
29 |
| - state: "{{ (docker_compose_version == 'latest') | ternary('latest', 'present') }}" |
30 |
| - version: "{{ (docker_compose_version == 'latest') | ternary(omit, docker_compose_version) }}" |
31 |
| - when: docker_compose_version is defined |
32 |
| - |
33 | 55 | # make sure docker restarts to get the newest configuration
|
34 | 56 | - meta: flush_handlers
|
35 | 57 |
|
| 58 | +- name: gather docker facts |
| 59 | + setup: |
| 60 | + when: "{{ ansible_docker0 is not defined or docker_config_result | changed }}" |
| 61 | + |
36 | 62 | - name: pull useful images for future use
|
37 | 63 | command: docker pull {{ item }}
|
38 |
| - register: docker_result |
| 64 | + register: docker_pull_result |
39 | 65 | changed_when: '"Downloaded newer image for" in docker_result.stdout'
|
40 |
| - with_items: |
41 |
| - - busybox |
42 |
| - - ubuntu-debootstrap:14.04 |
| 66 | + with_items: "{{ docker_images_to_pull }}" |
43 | 67 |
|
| 68 | +- name: login to docker registry |
| 69 | + command: "docker login -u {{ item.username }} -p {{ item.password }} -e {{ item.email }} {{ item.url }}" |
| 70 | + with_items: "{{ docker_registries_to_login }}" |
0 commit comments