--- - hosts: all become: yes collections: - ansible.posix vars: target_time: "{{hour}}:{{ range(10, 59) | random }}" tasks: - name: get the next day shell: "date -d '+1 days' +%d.%m.%Y" register: nextday - debug: var=nextday.stdout - name: Set target_date variable set_fact: target_next_date: "{{ nextday.stdout }}" - name: set Target date set_fact: target_date: "{% if next_day == 'false' %}{{day}}{% else %}{{ target_next_date }}{% endif %}" - name: Print Input Target Time debug: var: target_time - name: Print Input Target Date debug: var: target_date - name: Calculate minutes set_fact: #minutes_until_target: "{{ ((target_date + ' ' + target_time)|to_datetime('%Y-%m-%d %H:%M') - 'now'|to_datetime).seconds // 60 }}" minutes_until_target: "{{ (((target_date + ' ' + target_time)|to_datetime('%d.%m.%Y %H:%M') ) - now()).seconds // 60 }}" minutes_target_days: "{{ (((target_date + ' ' + target_time)|to_datetime('%d.%m.%Y %H:%M') ) - now()).days * 24 *60 }}" - name: Print day Minutes to target debug: var: minutes_target_days - name: Print minutes to target debug: var: minutes_until_target - name: calculate minutes step 2 set_fact: total_minutes: "{{ (minutes_target_days | int ) + ( minutes_until_target | int) }}" - name: Print Minutes to target debug: var: total_minutes - name: Install packages ansible.builtin.yum: name: - at state: present - name: Schedule a reboot ansible.posix.at: command: touch /tmp/reboot.test state: present unique: true count: "{{ total_minutes }}" units: minutes