# roles/setup_docker_storage/tasks/main.yml - name: Install LVM tools (if not present) ansible.builtin.package: name: lvm2 state: present - name: Create physical volume community.general.lvg: pvs: "/dev/{{ docker_disk }}" vg: "{{ docker_vg }}" - name: Check if Docker LV exists ansible.builtin.command: "lvs --noheadings -o lv_name {{ docker_vg }}" register: lvs_output - name: Create logical volume for Docker community.general.lvol: vg: "{{ docker_vg }}" lv: "{{ docker_lv }}" size: "{{ docker_lv_size }}" state: present # when: docker_lv not in lvs_output.stdout # vars: # docker_lv: "{{ docker_lv }}" - name: Format logical volume with XFS community.general.filesystem: fstype: xfs dev: "/dev/{{ docker_vg }}/{{ docker_lv }}" opts: "-n ftype=1" - name: Create mount point for Docker volume ansible.builtin.file: path: "{{ docker_mountpoint }}" state: directory mode: '0755' - name: Mount Docker LV to VM filesystem ansible.posix.mount: path: "{{ docker_mountpoint }}" src: "/dev/{{ docker_vg }}/{{ docker_lv }}" fstype: xfs opts: defaults state: mounted - name: Stop Docker service ansible.builtin.systemd: name: docker state: stopped enabled: true - name: Bind mount new Docker data dir to /var/lib/docker ansible.posix.mount: path: /var/lib/docker src: /docker-data fstype: none opts: bind state: mounted # - name: Bind mount new Docker data dir to /var/lib/docker # ansible.builtin.file: # path: /var/lib/docker # state: directory # mode: '0755' # - name: Add fstab entry for Docker bind mount # ansible.builtin.blockinfile: # path: /etc/fstab # block: | # /mnt/docker-data /var/lib/docker none bind 0 0 # marker: "# {mark} ANSIBLE MANAGED BLOCK - DOCKER BIND" - name: Start Docker service ansible.builtin.systemd: name: docker state: started enabled: true