--- - name: Check and remove udev rules block: - name: Find udev rules files find: paths: /etc/udev/rules.d patterns: "*-cloud-ifupdown.rules" register: udev_rules_to_remove - name: Get dynamically defined file path from udev rule command: grep -oP 'RUN\+="\K[^"]*' "{{ run.path }}" with_items: "{{ udev_rules_to_remove.files }}" register: dynamic_file_paths loop_control: loop_var: run - name: Remove dynamically defined file file: path: "{{ runf.stdout }}" state: absent with_items: "{{ dynamic_file_paths.results }}" when: runf.stdout is defined and runf.stdout != '' loop_control: loop_var: runfile - name: Remove udev rules file: path: "{{ rule.path }}" state: absent with_items: "{{ udev_rules_to_remove.files | default([]) }}" when: udev_rules_to_remove.matched > 0 loop_control: loop_var: rule