Я хочу написать ANSIBLE Playbook (я довольно новичок в ANSIBLE - так что будьте добры со мной), который проверяет, существуют ли различные пользовательские cronjobs в пользовательском crontab.Задания должны просто выполнять различные сценарии.Задания одинаковы для всех хостов, кроме имени скрипта.Строка в crontab выглядит следующим образом:
30 5 * * * /path/to/script/monitoringScript_serviceX > /path/to/script/monitoringScript_serviceX.out 2>&1
В зависимости от того, на каком хосте я работаю, определяются разные службы, что приводит к различным именам сценариев.Я определил сервисы как список YAML в host_vars в одном файле на хост (инвентарь / host_vars / host1 / services)
Один файл сервисов выглядит примерно так:
services:
- service1
- service2
Некоторые изхосты имеют только один определенный сервис.
Моя книга воспроизведения выглядит следующим образом:
- hosts: hostgroupX
gather_facts: False
tasks:
- name: Ensure monitoring cron jobs are present
cron:
name: "check: monitoring data jobs"
hour: "5"
minute: "30"
user: "user"
job: "/path/to/script/monitoringScript_{{ item }} > /path/to/script/monitoringScript_{{ item }}.out 2>&1"
loop: "{{ services }}"
Если я разрешу запуск воспроизведения на одном хосте, на котором в файле определена только одна служба, все работает хорошо.
Но если определено более одной службы, в crontab записывается только последняя служба в списке.Результат с приведенным выше примером файла служб будет выглядеть так:
#Ansible: check: monitoring data jobs
30 5 * * * /path/to/script/monitoringScript_service2 > /path/to/script/monitoringScript_service2.out 2>&1
, хотя я хочу, чтобы он выглядел так:
#Ansible: check: monitoring data jobs
30 5 * * * /path/to/script/monitoringScript_service1 > /path/to/script/monitoringScript_service1.out 2>&1
30 5 * * * /path/to/script/monitoringScript_service2 > /path/to/script/monitoringScript_service2.out 2>&1
Буду признателен за любые идеи, как этого добитьсяэто, заранее спасибо!