--- - name: Verify and configure Docker storage driver hosts: docker tags: - docker - docker-devicemapper tasks: - name: Check for existing Docker configuration using devicemapper block: - name: Query Docker daemon for storage driver docker_host_info: failed_when: false register: docker - block: - name: Check for a Docker configuration file become: True stat: path: /etc/docker/daemon.json register: docker_config_file - name: Check whether devicemapper is used in configuration file lineinfile: path: /etc/docker/daemon.json regexp: 'storage-driver.*devicemapper' state: absent become: True changed_when: False # `check_mode: True` ensures that we don't modify daemon.json check_mode: True register: devicemapper_docker when: docker_config_file.stat.exists when: not (docker.can_talk_to_docker | default(true)) - name: Fail if devicemapper is in use while another storage driver was requested fail: msg: "Docker storage driver {{ docker_storage_driver }} was requested, but devicemapper is in use" when: (docker.can_talk_to_docker | default(true) and docker.host_info.Driver == 'devicemapper') or (devicemapper_docker.found | default(0) == 1) when: docker_storage_driver != 'devicemapper' - name: Ensure Docker devicemapper storage is configured include_role: name: docker-devicemapper when: docker_storage_driver == 'devicemapper'