diff --git a/roles/docker/defaults/main.yml b/roles/docker/defaults/main.yml new file mode 100644 index 0000000..0946dac --- /dev/null +++ b/roles/docker/defaults/main.yml @@ -0,0 +1,2 @@ +--- + docker_storage_driver: overlay2 diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index 6ff9cde..121d7a7 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -1,12 +1,13 @@ --- - - name: Check for mandatory variables required by this playbook - fail: - msg: "This playbook requires {{item}} to be set." - when: "item is not defined or item == ''" - with_items: - - docker_storage_vg - tags: docker-storage + - name: Make sure the extra repos is enabled + command: subscription-manager repos --enable rhel-7-server-extras-rpms + when: "ansible_os_family == 'RedHat' and not is_offline|default(False)|bool" + tags: rpm + + - name: Install a missing dependency of Docker + yum: name=python-setuptools state=installed + tags: rpm - name: Install Docker yum: name=docker state=installed @@ -15,24 +16,17 @@ - name: Start docker service: name=docker state=started tags: docker-storage - when: 'docker_storage_setup_needs_to_run is not defined' - - name: Determine if docker storage driver == devicemapper + - name: Determine if the docker storage driver is the correct one shell: docker info register: docker_info changed_when: false - when: 'docker_storage_setup_needs_to_run is not defined' - name: set docker_storage_setup_needs_to_run set_fact: - docker_storage_setup_needs_to_run: '{{ docker_info.stdout.find(''Storage Driver: devicemapper'') == -1 or docker_info.stdout.find(''Data file: /dev/loop'') != -1 }}' - when: 'docker_storage_setup_needs_to_run is not defined' + docker_storage_setup_needs_to_run: '{{ docker_info.stdout.find(''Storage Driver: '' ~ docker_storage_driver) == -1 or docker_info.stdout.find(''Data file: /dev/loop'') != -1 }}' tags: docker-storage - - name: Cleanup the existing docker-storage state - file: state=absent path=/etc/sysconfig/docker-storage - when: docker_storage_setup_needs_to_run - - name: stop docker service: name: docker @@ -45,7 +39,7 @@ when: docker_storage_setup_needs_to_run tags: docker-storage - - name: Configure docker-storage-setup to use LVM + - name: Configure docker-storage-setup to use the correct storage driver template: dest=/etc/sysconfig/docker-storage-setup src=docker-storage-setup register: docker-storage-setup when: docker_storage_setup_needs_to_run diff --git a/roles/docker/templates/docker-storage-setup b/roles/docker/templates/docker-storage-setup index 0b624c9..6c59c5f 100644 --- a/roles/docker/templates/docker-storage-setup +++ b/roles/docker/templates/docker-storage-setup @@ -1,27 +1,10 @@ -STORAGE_DRIVER=devicemapper +STORAGE_DRIVER={{ docker_storage_driver }} +{% if docker_storage_driver == 'devicemapper' %} DOCKER_ROOT_VOLUME=yes - +{% if docker_storage_disk is defined %} +DEVS={{ docker_storage_disk }} +{% endif %} {% if docker_storage_vg is defined %} VG={{ docker_storage_vg }} {% endif %} - -# Enable automatic extension of pool by lvm. lvm can monitor -# the pool and automatically extend it when pool is getting full. -AUTO_EXTEND_POOL=true - -# Determines the pool extension threshold in terms of percentage -# of pool size. For example, if threshold is 60, that means when -# pool is 60% full, threshold has been hit. -POOL_AUTOEXTEND_THRESHOLD=80 - -# Determines the amount by which pool needs to be grown. This is -# specified in terms of % of pool size. So a value of 20 means -# that when threshold is hit, pool will be grown by 20% of existing -# pool size. -POOL_AUTOEXTEND_PERCENT=20 - -# Create a Logical Volume of 20G for /var/lib/docker -DOCKER_ROOT_VOLUME_SIZE=20G - -# Create a Thinpool Logical Volume of 50G for Container Storage -DATA_SIZE=50G +{% endif %}