From 8e05661fc51c4a3e9908fc7aed3f10cff73b063e Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Tue, 7 Sep 2021 13:11:21 +0200 Subject: [PATCH] Have /usr/local/bin in cron PATH This lets scripts in cron jobs find /usr/local/bin/simple_message_to_bus without hard-coding the whole path. Signed-off-by: Nils Philippsen --- .../tasks/crontab_path.yml | 41 +++++++++++++++++++ roles/fedora-messaging-utils/tasks/main.yml | 6 +++ 2 files changed, 47 insertions(+) create mode 100644 roles/fedora-messaging-utils/tasks/crontab_path.yml diff --git a/roles/fedora-messaging-utils/tasks/crontab_path.yml b/roles/fedora-messaging-utils/tasks/crontab_path.yml new file mode 100644 index 0000000000..93c91545d1 --- /dev/null +++ b/roles/fedora-messaging-utils/tasks/crontab_path.yml @@ -0,0 +1,41 @@ +##################################################### +# Ensure PATH in /etc/crontab contains /usr/local/bin +##################################################### + +- name: check if PATH is set in crontab + lineinfile: + path: /etc/crontab + state: absent + regexp: '^PATH\s*=' + check_mode: yes + changed_when: false + register: path_set_in_crontab + +- name: add PATH if not set in crontab + lineinfile: + path: /etc/crontab + state: present + insertbefore: BOF + line: 'PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin' + validate: crontab -T %s + when: not path_set_in_crontab.found + +- name: check if PATH in crontab contains /usr/local/bin + lineinfile: + path: /etc/crontab + state: absent + regexp: '^PATH\s*=\s*(.*:)?/usr/local/bin(:.*)?\s*' + check_mode: yes + changed_when: false + register: local_in_path_in_crontab + when: path_set_in_crontab.found + +- name: append /usr/local/bin to PATH in crontab if missing + lineinfile: + path: /etc/crontab + state: present + backrefs: yes + regexp: '^(PATH\s*=\s*(?:.*\S)?)\s*$' + line: '\1:/usr/local/bin' + validate: crontab -T %s + when: path_set_in_crontab.found and not local_in_path_in_crontab.found diff --git a/roles/fedora-messaging-utils/tasks/main.yml b/roles/fedora-messaging-utils/tasks/main.yml index c7abbbc439..33575f31f5 100644 --- a/roles/fedora-messaging-utils/tasks/main.yml +++ b/roles/fedora-messaging-utils/tasks/main.yml @@ -2,3 +2,9 @@ copy: src=simple_message_to_bus dest=/usr/local/bin/ mode=0755 tags: - fedora-messaging + +- name: ensure PATH in crontab contains /usr/local/bin + import_tasks: crontab_path.yml + tags: + - fedora-messaging + - cron