diff --git a/CHANGELOG.md b/CHANGELOG.md index 9710d17..22f8c0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### Enhancement * Upgrade package version from URL from 2.4 to 2.6 (thanks to @roumano - issue #15). +* Allow running the agent with a cron job instead of the service (thanks to @yodabzh - issue #18) * Allow service to be managed, (thanks to @yodabzh - issue #17). ### Fix diff --git a/README.md b/README.md index c18064d..930c5b7 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,17 @@ A role to manage FusionInventory agent installation and configuration. * **fusioninventory__agent_service_status**: Service state, can be started, stopped, restarted, reloaded [default : `started`]. * **fusioninventory__agent_service_enabled**: Service status, can be enabled (`true`) or disabled (`false`) [default: `true`]. +## Cron variables + +* **fusioninventory__agent_conf_cron**: Enable (`"present"`) or disable (`"absent"`) a job cron to run the agent [default : `"absent"`]. +* **fusioninventory__agent_conf_cron_day**: Which days should the agent be ran [default : `"*"`]. +* **fusioninventory__agent_conf_cron_hour**: Which hours should the agent be ran [default : `"23"`]. +* **fusioninventory__agent_conf_cron_minute**: Which minutes should the agent be ran [default : `"0"`]. +* **fusioninventory__agent_conf_cron_month**: Which months should the agent be ran [default : `"*"`]. +* **fusioninventory__agent_conf_cron_weekday**: Which weekdays should the agent be ran [default : `"*"`]. +* **fusioninventory__agent_conf_cron_user**: Which user should the agent be ran under [default : `"root"`]. +* **fusioninventory__agent_conf_command**: The command should cron run [default : `"sleep $(( RANDOM \\% 3600 )); /usr/bin/fusioninventory-agent"`]. + ### Config Specific Variables Some variables used to generate FusionInventery agent.cfg file from Ansible template : diff --git a/defaults/main.yml b/defaults/main.yml index e0b2e88..7c975d0 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -72,7 +72,66 @@ fusioninventory__agent_service_enabled: true fusioninventory__agent_service_manage: true # ]]] + +# Cron configuration [[[ +# ----------------------------- +# .. envvar:: fusioninventory__agent_conf_cron [[[ +# +# Instead of running as an agent, run by cron. Can be "absent" or "present" +# +fusioninventory__agent_conf_cron: "absent" # ]]] + +# .. envvar:: fusioninventory__agent_conf_cron_day [[[ +# +# Which days should the agent be ran +# +fusioninventory__agent_conf_cron_day: "*" + # ]]] + +# .. envvar:: fusioninventory__agent_conf_cron_hour [[[ +# +# Which hours should the agent be ran +# +fusioninventory__agent_conf_cron_hour: "23" + # ]]] + +# .. envvar:: fusioninventory__agent_conf_cron_minute [[[ +# +# Which minutes should the agent be ran +# +fusioninventory__agent_conf_cron_minute: "0" + # ]]] + +# .. envvar:: fusioninventory__agent_conf_cron_month [[[ +# +# Which months should the agent be ran +# +fusioninventory__agent_conf_cron_month: "*" + # ]]] + +# .. envvar:: fusioninventory__agent_conf_cron_weekday [[[ +# +# Which weekdays should the agent be ran +# +fusioninventory__agent_conf_cron_weekday: "*" + # ]]] + +# .. envvar:: fusioninventory__agent_conf_cron_user [[[ +# +# Which user should the agent be ran under +# +fusioninventory__agent_conf_cron_user: "root" + # ]]] + +# .. envvar:: fusioninventory__agent_conf_command [[[ +# +# The command should cron run +# +fusioninventory__agent_conf_command: "sleep $(( RANDOM \\% 3600 )); /usr/bin/fusioninventory-agent" + # ]]] + # ]]] + # Configuration [[[ # ----------------------------- diff --git a/tasks/main.yml b/tasks/main.yml index c4486f8..52e6508 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -63,3 +63,17 @@ state: "{{ fusioninventory__agent_service_status }}" enabled: "{{ fusioninventory__agent_service_enabled }}" when: fusioninventory__agent_deploy_state == "present" + +- name: "Create cron entry when needed" + cron: + name: fusion-inventory-oneshot + cron_file: fusion-inventory-oneshot + day: "{{ fusioninventory__agent_conf_cron_day }}" + hour: "{{ fusioninventory__agent_conf_cron_hour }}" + minute: "{{ fusioninventory__agent_conf_cron_minute }}" + month: "{{ fusioninventory__agent_conf_cron_month }}" + weekday: "{{ fusioninventory__agent_conf_cron_weekday }}" + user: "{{ fusioninventory__agent_conf_cron_user }}" + state: "{{ fusioninventory__agent_conf_cron }}" + job: "{{ fusioninventory__agent_conf_command }}" +