--- - name: Query docker daemon information command: "docker info" register: docker_info changed_when: False failed_when: False - name: Fail when non-devicemapper containers or images exist fail: msg: > Not configuring docker storage in {{ docker_storage_driver }} mode as non-devicemapper containers or images exist. when: - docker_info.rc == 0 - "'Data loop file' in docker_info.stdout or 'devicemapper' not in docker_info.stdout" - "'Images: 0' not in docker_info.stdout or 'Containers: 0' not in docker_info.stdout" - name: Ensure the docker storage metadata profile exists template: src: docker-thinpool.profile.j2 dest: /etc/lvm/profile/docker-thinpool.profile become: True - name: Query LVM thinpool volume command: "lvs {{ docker_storage_volume_group }}/{{ docker_storage_volume_thinpool }}" register: lvs_result changed_when: false failed_when: false become: true - block: - name: Ensure the docker storage data and metadata volumes exist lvol: vg: "{{ docker_storage_volume_group }}" lv: "{{ item.name }}" size: "{{ item.size }}" shrink: no state: present with_items: - name: "{{ docker_storage_volume_thinpool }}" size: "{{ docker_storage_volume_thinpool_size }}" - name: "{{ docker_storage_volume_thinpool_meta }}" size: "{{ docker_storage_volume_thinpool_meta_size }}" become: True - name: Ensure the docker storage volume is converted to a thinpool command: > lvconvert -y --zero n -c 512K --thinpool {{ docker_storage_volume_group }}/{{ docker_storage_volume_thinpool }} --poolmetadata {{ docker_storage_volume_group }}/{{ docker_storage_volume_thinpool_meta }} become: True - name: Ensure the docker storage metadata profile is applied command: > lvchange --metadataprofile docker-thinpool {{ docker_storage_volume_group }}/{{ docker_storage_volume_thinpool }} become: True when: lvs_result.rc != 0