ansible-collections / community.windows

Windows community collection for Ansible
https://galaxy.ansible.com/community/windows
GNU General Public License v3.0
193 stars 152 forks source link

Can not create scheduled task that runs only on last day of month #569

Open Craneson opened 1 month ago

Craneson commented 1 month ago
SUMMARY

A task trigger can run on the days 1-31 and also on "last day of month", but it's not possible to only run on last day without any of the days 1-31. Parameter 'days_of_month' for trigger type 'monthly' needs to allow 0 as a valid value, if 'run_on_last_day_of_month' is set to true.

ISSUE TYPE
COMPONENT NAME

win_scheduled_task

ANSIBLE VERSION
ansible [core 2.15.3]
  config file = /home/in-kon.ch/pam_ecj/ta-playbooks/ansible.cfg
  configured module search path = ['/home/in-kon.ch/pam_ecj/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.11/site-packages/ansible
  ansible collection location = /usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.11.5 (main, Sep 22 2023, 15:34:29) [GCC 8.5.0 20210514 (Red Hat 8.5.0-20)] (/usr/bin/python3.11)
  jinja version = 3.1.2
  libyaml = True
COLLECTION VERSION
# /usr/share/ansible/collections/ansible_collections
Collection        Version
----------------- -------
community.windows 1.12.0
CONFIGURATION
COLLECTIONS_PATHS(/home/in-kon.ch/pam_ecj/ta-playbooks/ansible.cfg) = ['/usr/share/ansible/collections']
CONFIG_FILE() = /home/in-kon.ch/pam_ecj/ta-playbooks/ansible.cfg
DEFAULT_ROLES_PATH(/home/in-kon.ch/pam_ecj/ta-playbooks/ansible.cfg) = ['/home/in-kon.ch/pam_ecj/roles', '/usr/share/ansible/roles']
DEFAULT_VAULT_PASSWORD_FILE(/home/in-kon.ch/pam_ecj/ta-playbooks/ansible.cfg) = /home/in-kon.ch/pam_ecj/.ansible_vault
GALAXY_SERVER_LIST(/home/in-kon.ch/pam_ecj/ta-playbooks/ansible.cfg) = ['rh-certified_repo', 'community_repo', 'published_repo']
OS / ENVIRONMENT

Ansible: Red Hat Enterprise Linux release 8.9 (Ootpa) Target: Windows Server 2016, Version 1607

STEPS TO REPRODUCE

Try to create a scheduled task with a trigger of type 'monthly'. The trigger shall only run on last day of month, so set 'run_on_last_day_of_month: true' and 'days_of_month: 0'.

- name: Create a task
  community.windows.win_scheduled_task:
    name: TaskName
    actions:
    - path: cmd.exe
    triggers:
    - type: monthly
      days_of_month: 0
      run_on_last_day_of_month: true
      start_boundary: '2017-10-09T09:00:00'
EXPECTED RESULTS

A scheduled task will be created that has a monthly trigger that runs on last day of every month

ACTUAL RESULTS

The task fails with a message "invalid day of month '0', please specify numbers from 1-31"

TASK [Create a task] *******************************************************************************************************************************************
task path: /home/in-kon.ch/pam_ecj/ta-playbooks/ta_test_scheduldedtask.yml:17
Trying secret FileVaultSecret(filename='/home/in-kon.ch/pam_ecj/.ansible_vault') for vault_id=default
Trying secret FileVaultSecret(filename='/home/in-kon.ch/pam_ecj/.ansible_vault') for vault_id=default
Trying secret FileVaultSecret(filename='/home/in-kon.ch/pam_ecj/.ansible_vault') for vault_id=default
Using module file /usr/share/ansible/collections/ansible_collections/community/windows/plugins/modules/win_scheduled_task.ps1
Pipelining is enabled.
<host.domain.com> ESTABLISH WINRM CONNECTION FOR USER: user@domain.com on PORT 5985 TO host.domain.com
calling kinit with subprocess for principal user@domain.com
EXEC (via pipeline wrapper)
fatal: [host.domain.com]: FAILED! => {
    "changed": false,
    "msg": "invalid day of month '0', please specify numbers from 1-31"
}