summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/setup_cron/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/setup_cron/tasks/main.yml')
-rw-r--r--test/integration/targets/setup_cron/tasks/main.yml99
1 files changed, 99 insertions, 0 deletions
diff --git a/test/integration/targets/setup_cron/tasks/main.yml b/test/integration/targets/setup_cron/tasks/main.yml
new file mode 100644
index 0000000..730926d
--- /dev/null
+++ b/test/integration/targets/setup_cron/tasks/main.yml
@@ -0,0 +1,99 @@
+- name: Include distribution specific variables
+ include_vars: "{{ lookup('first_found', search) }}"
+ vars:
+ search:
+ files:
+ - '{{ ansible_distribution | lower }}.yml'
+ - '{{ ansible_os_family | lower }}.yml'
+ - '{{ ansible_system | lower }}.yml'
+ - default.yml
+ paths:
+ - vars
+
+- name: install cron package
+ package:
+ name: '{{ cron_pkg }}'
+ when: cron_pkg | default(false, true)
+ register: cron_package_installed
+ until: cron_package_installed is success
+
+- when: faketime_pkg | default(false, true)
+ block:
+ - name: install faketime packages
+ package:
+ name: '{{ faketime_pkg }}'
+ register: faketime_package_installed
+ until: faketime_package_installed is success
+ when: ansible_distribution != 'Alpine'
+
+ - name: install faketime packages - Alpine
+ # NOTE: The `faketime` package is currently only available in the
+ # NOTE: `edge` branch.
+ # FIXME: If it ever becomes available in the `main` repository for
+ # FIXME: currently tested Alpine versions, the `--repository=...`
+ # FIXME: option can be dropped.
+ command: apk add -U {{ faketime_pkg }} --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing
+ when: ansible_distribution == 'Alpine'
+
+ - name: Find libfaketime path
+ shell: '{{ list_pkg_files }} {{ faketime_pkg }} | grep -F libfaketime.so.1'
+ register: libfaketime_path
+ when: list_pkg_files is defined
+
+ - when: ansible_service_mgr == 'systemd'
+ block:
+ - name: create directory for cron drop-in file
+ file:
+ path: '/etc/systemd/system/{{ cron_service }}.service.d'
+ state: directory
+ owner: root
+ group: root
+ mode: 0755
+
+ - name: Use faketime with cron service
+ copy:
+ content: |-
+ [Service]
+ Environment=LD_PRELOAD={{ libfaketime_path.stdout_lines[0].strip() }}
+ Environment="FAKETIME=+0y x10"
+ Environment=RANDOM_DELAY=0
+ dest: '/etc/systemd/system/{{ cron_service }}.service.d/faketime.conf'
+ owner: root
+ group: root
+ mode: 0644
+
+ - when: ansible_system == 'FreeBSD'
+ name: Use faketime with cron service
+ copy:
+ content: |-
+ cron_env='LD_PRELOAD={{ libfaketime_path.stdout_lines[0].strip() }} FAKETIME="+0y x10"'
+ dest: '/etc/rc.conf.d/cron'
+ owner: root
+ group: wheel
+ mode: 0644
+
+- name: enable cron service
+ service:
+ daemon-reload: "{{ (ansible_service_mgr == 'systemd') | ternary(true, omit) }}"
+ name: '{{ cron_service }}'
+ state: restarted
+ when: ansible_distribution != 'Alpine'
+
+- name: enable cron service - Alpine
+ command: nohup crond
+ environment:
+ FAKETIME: "+0y x10"
+ LD_PRELOAD: "/usr/lib/faketime/libfaketime.so.1"
+ when: ansible_distribution == 'Alpine'
+
+- name: See if /etc/pam.d/crond exists
+ stat:
+ path: /etc/pam.d/crond
+ register: pamd
+
+# https://github.com/lxc/lxc/issues/661#issuecomment-222444916
+# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=726661
+- name: Work around containers not being able to write to /proc/self/loginuid
+ command: sed -i '/pam_loginuid\.so$/ s/required/optional/' /etc/pam.d/crond
+ when:
+ - pamd.stat.exists