From 6e71762b2047e28d07e1ea87b712e2bbe424ec4b Mon Sep 17 00:00:00 2001 From: jalr Date: Sat, 12 May 2018 22:08:02 +0200 Subject: [PATCH] Setup LVM before starting docker daemon --- .../roles/docker/files/docker-override.conf | 2 + .../roles/docker/files/docker-setup.sh | 46 +++++++++++++++++++ .../roles/docker/tasks/lvm-setup-service.yml | 25 ++++++++++ packer/ansible/roles/docker/tasks/main.yml | 4 ++ 4 files changed, 77 insertions(+) create mode 100644 packer/ansible/roles/docker/files/docker-override.conf create mode 100755 packer/ansible/roles/docker/files/docker-setup.sh create mode 100644 packer/ansible/roles/docker/tasks/lvm-setup-service.yml diff --git a/packer/ansible/roles/docker/files/docker-override.conf b/packer/ansible/roles/docker/files/docker-override.conf new file mode 100644 index 0000000..4f44627 --- /dev/null +++ b/packer/ansible/roles/docker/files/docker-override.conf @@ -0,0 +1,2 @@ +[Service] +ExecStartPre=/usr/local/sbin/docker-setup.sh diff --git a/packer/ansible/roles/docker/files/docker-setup.sh b/packer/ansible/roles/docker/files/docker-setup.sh new file mode 100755 index 0000000..7e34a45 --- /dev/null +++ b/packer/ansible/roles/docker/files/docker-setup.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +vg='vglab' + +if ! lvs -o layout --noheadings $vg/docker-thinpool | grep -q 'thin,pool'; then + + if ! lvs -o LV_NAME --noheadings | grep -q docker-thinpool; then + lvcreate --wipesignatures y -n docker-thinpool "$vg" -l 10%VG + fi + + if ! lvs -o LV_NAME --noheadings | grep -q docker-thinpoolmeta; then + lvcreate --wipesignatures y -n docker-thinpoolmeta "$vg" -l 1%VG + fi + + lvconvert -y \ + --zero n \ + -c 512K \ + --thinpool "$vg/docker-thinpool" \ + --poolmetadata "$vg/docker-thinpoolmeta" +fi + +if ! [ -f /etc/lvm/profile/docker-thinpool.profile ]; then + [ -d /etc/lvm/profile ] || mkdir /etc/lvm/profile + cat > /etc/lvm/profile/docker-thinpool.profile << EOF +activation { + thin_pool_autoextend_threshold=80 + thin_pool_autoextend_percent=20 +} +EOF + lvchange --metadataprofile docker-thinpool "$vg/docker-thinpool" + lvs -o+seg_monitor +fi + +lv_path=$(lvm lvs "$vg/docker-thinpool" -o LV_PATH --noheadings | sed 's/\s//g') + +cat > /etc/docker/daemon.json << EOF +{ + "storage-driver": "devicemapper", + "storage-opts": [ + "dm.thinpooldev=$lv_path", + "dm.use_deferred_removal=true", + "dm.use_deferred_deletion=true" + ] +} +EOF + diff --git a/packer/ansible/roles/docker/tasks/lvm-setup-service.yml b/packer/ansible/roles/docker/tasks/lvm-setup-service.yml new file mode 100644 index 0000000..b221ef6 --- /dev/null +++ b/packer/ansible/roles/docker/tasks/lvm-setup-service.yml @@ -0,0 +1,25 @@ +--- +- name: copy docker-setup script + copy: + src: docker-setup.sh + dest: /usr/local/sbin/docker-setup.sh + owner: root + group: root + mode: "0744" + +- name: create override directory for docker service unit + file: + path: /etc/systemd/system/docker.service.d + state: directory + mode: "0755" + owner: root + group: root + +- name: copy systemd unit override for docker service + copy: + src: docker-override.conf + dest: /etc/systemd/system/docker.service.d/override.conf + owner: root + group: root + mode: "0644" + diff --git a/packer/ansible/roles/docker/tasks/main.yml b/packer/ansible/roles/docker/tasks/main.yml index 460e943..f9b4a60 100644 --- a/packer/ansible/roles/docker/tasks/main.yml +++ b/packer/ansible/roles/docker/tasks/main.yml @@ -2,3 +2,7 @@ - import_tasks: packages.yml tags: - docker:packages + +- import_tasks: lvm-setup-service.yml + tags: + - docker:lvm-setup-service