--- - name: "hold packages (apt)" shell: "set -o pipefail && (dpkg -l {{ item }} 2>/dev/null | grep -q -E '^(i|h)i') && ((apt-mark showhold | grep --quiet {{ item }}) || apt-mark hold {{ item }})" args: executable: /bin/bash check_mode: no register: apt_mark changed_when: "item + ' set on hold.' in apt_mark.stdout" failed_when: - apt_mark.rc != 0 - apt_mark.stdout | length > 0 loop: "{{ apt_hold_packages }}" tags: - apt - name: "/etc/evolinux is present" file: dest: /etc/evolinux mode: "0700" state: directory tags: - apt - name: "hold packages (config)" lineinfile: dest: /etc/evolinux/apt_hold_packages.cf line: "{{ item }}" create: True state: present loop: "{{ apt_hold_packages }}" tags: - apt - name: "unhold packages (apt)" shell: "set -o pipefail && (dpkg -l {{ item }} 2>/dev/null | grep -q -E '^(i|h)i') && ((apt-mark showhold | grep --quiet {{ item }}) && apt-mark unhold {{ item }})" args: executable: /bin/bash check_mode: no register: apt_mark changed_when: "'Canceled hold on' + item in apt_mark.stdout" failed_when: apt_mark.rc != 0 and not apt_mark.stdout = '' loop: "{{ apt_unhold_packages }}" tags: - apt - name: "unhold packages (config)" lineinfile: dest: /etc/evolinux/apt_hold_packages.cf line: "{{ item }}" create: True state: absent loop: "{{ apt_unhold_packages }}" tags: - apt - name: /usr/share/scripts exists file: dest: /usr/share/scripts mode: "0700" owner: root group: root state: directory tags: - apt - name: Check scripts is installed copy: src: check_held_packages.sh dest: /usr/share/scripts/check_held_packages.sh force: yes mode: "0755" tags: - apt - name: Check if Cron is installed shell: "dpkg --list 'cron' 2>/dev/null | grep -q -E '^(i|h)i'" register: is_cron changed_when: false failed_when: false check_mode: no tags: - apt - name: Check for held packages (script) cron: cron_file: apt-hold-packages name: check_held_packages job: "/usr/share/scripts/check_held_packages.sh" user: root minute: "{{ apt_check_hold_cron_minute }}" hour: "{{ apt_check_hold_cron_hour }}" weekday: "{{ apt_check_hold_cron_weekday }}" day: "{{ apt_check_hold_cron_day }}" month: "{{ apt_check_hold_cron_month }}" state: "present" when: is_cron.rc == 0 tags: - apt