summaryrefslogtreecommitdiff
path: root/roles/docker/engine/tasks
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2020-10-23 01:16:06 +0200
committerChristian Pointner <equinox@spreadspace.org>2020-10-23 01:16:06 +0200
commit559e51d94ceb081c56e9f0560eb6ba32ecb7ca2f (patch)
treed0df023ded115c0dc8bc894798d17b70491290c3 /roles/docker/engine/tasks
parentmove nodejs apt-repo to separate role (diff)
split docker role into apt-repo and engine
Diffstat (limited to 'roles/docker/engine/tasks')
-rw-r--r--roles/docker/engine/tasks/lvm.yml18
-rw-r--r--roles/docker/engine/tasks/main.yml46
-rw-r--r--roles/docker/engine/tasks/zfs.yml14
3 files changed, 78 insertions, 0 deletions
diff --git a/roles/docker/engine/tasks/lvm.yml b/roles/docker/engine/tasks/lvm.yml
new file mode 100644
index 00000000..34cbab0f
--- /dev/null
+++ b/roles/docker/engine/tasks/lvm.yml
@@ -0,0 +1,18 @@
+---
+- name: create logical volume
+ lvol:
+ vg: "{{ docker_lvm.vg }}"
+ lv: "{{ docker_lvm.lv }}"
+ size: "{{ docker_lvm.size }}"
+
+- name: create filesystem
+ filesystem:
+ fstype: "{{ docker_lvm.fs }}"
+ dev: "/dev/mapper/{{ docker_lvm.vg | replace('-', '--') }}-{{ docker_lvm.lv | replace('-', '--') }}"
+
+- name: mount filesytem
+ mount:
+ src: "/dev/mapper/{{ docker_lvm.vg | replace('-', '--') }}-{{ docker_lvm.lv | replace('-', '--') }}"
+ path: /var/lib/docker
+ fstype: "{{ docker_lvm.fs }}"
+ state: mounted
diff --git a/roles/docker/engine/tasks/main.yml b/roles/docker/engine/tasks/main.yml
new file mode 100644
index 00000000..68a6504e
--- /dev/null
+++ b/roles/docker/engine/tasks/main.yml
@@ -0,0 +1,46 @@
+---
+- name: install docker daemon config
+ when: docker_daemon_config is defined
+ block:
+ - name: create docker config directory
+ file:
+ name: /etc/docker
+ state: directory
+ mode: 0700
+
+ - name: write docker daemon config
+ copy:
+ content: "{{ docker_daemon_config | to_nice_json }}\n"
+ dest: /etc/docker/daemon.json
+ notify: restart docker
+
+- name: prepare /var/lib/docker as LVM
+ when: docker_lvm is defined
+ import_tasks: lvm.yml
+
+- name: prepare /var/lib/docker as ZFS dataset
+ when: docker_zfs is defined
+ import_tasks: zfs.yml
+
+- name: prepare package provider
+ when: docker_pkg_provider != 'distro'
+ include_role:
+ name: "apt-repo/{{ docker_pkg_provider }}"
+
+- name: install docker
+ apt:
+ name: "{{ docker_pkg_name }}{% if docker_pkg_version is defined %}={{ docker_pkg_version }}{% endif %}"
+ state: present
+ force: yes
+
+- name: disable automatic upgrades for docker package
+ when: docker_pkg_version is defined
+ dpkg_selections:
+ name: "{{ docker_pkg_name }}"
+ selection: hold
+
+- name: start and enable docker
+ service:
+ name: docker
+ enabled: true
+ state: started
diff --git a/roles/docker/engine/tasks/zfs.yml b/roles/docker/engine/tasks/zfs.yml
new file mode 100644
index 00000000..e8289c7d
--- /dev/null
+++ b/roles/docker/engine/tasks/zfs.yml
@@ -0,0 +1,14 @@
+---
+- name: create zfs dataset
+ zfs:
+ name: "{{ docker_zfs.pool }}/{{ docker_zfs.name }}"
+ state: present
+ extra_zfs_properties: "{{ docker_zfs.properties | default(omit) }}"
+
+- name: bind mount filesytem
+ mount:
+ src: "{{ zfs_pools[docker_zfs.pool].mountpoint }}/{{ docker_zfs.name }}"
+ path: /var/lib/docker
+ fstype: none
+ opts: bind,x-systemd.automount,nofail
+ state: mounted