I'm building a cron server that will basically just serve as a central
server to run cron jobs from. I'm having trouble planning/implementing the
cron functionality in ansible. There will likely be many jobs under many
categories, so I would rather not make a play for each job, especially as
they could change often. I was thinking about making a template for a cron
file and using the template module with some variables to make categorized
cron files under /etc/cron.d/. I can't seem to figure out how the variables
will work without needing to make separate templates for each category just
to get the variables as a whole object. Example:
./vars/main.yml
---
footasks:
- name: Google Test
command: curl -s https://www.google.com > /root/google.html
- name: Dev Test
command: curl -s http://dev.example.com > /dev/null
bartasks:
- name: Foo
command: /bin/foo
- name: Bar
command: /bin/bar
./templates/cron.j2
[email protected]
{% for job in item %}
# {{ job.name }}
{{ job.minute|default("*") }} {{ job.hour|default("*") }} {{
job.dom|default("*") }} {{ job.month|default("*") }} {{
job.dow|default("*") }} {{ job.user|default("root") }} {{ job.command }}
{% endfor %}
./tasks/main.yml
---
- name: Setup Foo Cron Jobs
template: src=cron.j2 dest=/etc/cron.d/foo
with_items: footasks
- name: Setup bar Cron Jobs
template: src=cron.j2 dest=/etc/cron.d/bar
with_items: bartasks
The problem I get is that this error when I try to run the template play:
fatal: [test] => {'msg': "One or more undefined variables: 'str object' has
no attribute 'name'", 'failed': True}
If I just change the template to {{item}} to output whatever is input, the
play loops over each job in the variable and the end file only contains the
last job. I have tried every method I can find to attempt to pass the whole
variable/list into the template and can't figure it out. I've tried nesting
the variables as well as using with_nested. with_nested got me the closest,
but I couldn't get it to work still. Any ideas on how I can pass the whole
variable? Am I going about this all wrong?
Thanks
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/4f842474-1fe8-4010-9df2-282e88c4242d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.