From 2b91071fde9cecfd53d74345946864514bb7e5c1 Mon Sep 17 00:00:00 2001 From: Manuel Hutter Date: Tue, 4 Jul 2017 17:26:48 +0200 Subject: [PATCH 1/2] Make daemon.json settings configurable --- README.md | 11 ++++++++++- defaults/main.yml | 4 +++- tasks/main.yml | 9 +++++++++ templates/daemon.j2.json | 7 +------ templates/docker.j2.service | 2 +- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index a491dd2..b79bf98 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,16 @@ Install Docker ``` - hosts: servers roles: - - mongrelion.docker + - mongrelion.docker +``` + +Install and configure docker +```yaml +- hosts: servers + roles: + - role: mongrelion.docker + docker_config: + userland-proxy: false ``` Testing diff --git a/defaults/main.yml b/defaults/main.yml index dc42868..0cebbef 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -3,4 +3,6 @@ consul_ip: 127.0.0.1 docker_clusterstore: no dockerpy: no vagrant: no -docker_storagedriver: devicemapper +default_docker_config: + storage-driver: devicemapper + log-level: info diff --git a/tasks/main.yml b/tasks/main.yml index 6a7f63f..d707051 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -12,6 +12,15 @@ version: 1.9.0 when: dockerpy +- name: apply default daemon config + set_fact: + docker_json: "{{ default_docker_config | combine(docker_config | default({})) }}" + +- name: configure docker clusterstore + set_fact: + docker_json: '{{ docker_json | combine({"cluster-store": "consul://{{ consul_ip }}:8500"})}}' + when: docker_clusterstore + - name: ensure daemon config file is present template: src: daemon.j2.json diff --git a/templates/daemon.j2.json b/templates/daemon.j2.json index 5549cd8..55005d6 100644 --- a/templates/daemon.j2.json +++ b/templates/daemon.j2.json @@ -1,6 +1 @@ -{ -{% if docker_clusterstore %} - "cluster-store": "consul://{{ consul_ip }}:8500", -{% endif %} - "log-level": "info" -} +{{ docker_json | to_nice_json(indent=2) }} diff --git a/templates/docker.j2.service b/templates/docker.j2.service index 230c16a..0f938ef 100644 --- a/templates/docker.j2.service +++ b/templates/docker.j2.service @@ -8,7 +8,7 @@ Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker -ExecStart=/usr/bin/docker daemon -H unix:///var/run/docker.sock -s {{ docker_storagedriver }} +ExecStart=/usr/bin/docker daemon -H unix:///var/run/docker.sock ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=1048576 LimitNPROC=1048576 From c991857c542edf2e9e379ffa523da16bf00509c1 Mon Sep 17 00:00:00 2001 From: Manuel Hutter Date: Wed, 5 Jul 2017 12:19:29 +0200 Subject: [PATCH 2/2] Document `docker_config` in README --- README.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index b79bf98..7fe047a 100644 --- a/README.md +++ b/README.md @@ -3,17 +3,20 @@ docker ========= -Install Docker - -Requirements ------------- - -None +Install and configure Docker. Role Variables -------------- -None +### `docker_config` + +A dict of options that are written into docker's `daemon.json` config file. See [the docs for dockerd](https://docs.docker.com/engine/reference/commandline/dockerd/) for a full list of available options. + +Default values: (set them in your `docker_config` to overwrite) + + storage-driver: devicemapper + log-level: info + Dependencies ------------ @@ -23,7 +26,7 @@ None Example Playbook ---------------- Install Docker -``` +```yaml - hosts: servers roles: - mongrelion.docker @@ -35,6 +38,7 @@ Install and configure docker roles: - role: mongrelion.docker docker_config: + live-restore: true userland-proxy: false ```