If statement Ansible中参数的If条件
这是将cronjob添加到crontab的任务:If statement Ansible中参数的If条件,if-statement,ansible,conditional-statements,logrotate,If Statement,Ansible,Conditional Statements,Logrotate,这是将cronjob添加到crontab的任务: - name: Add job triggering logs rotation for clusters. cron: cron_file: '/etc/crontab' user: 'root' name: 'logrotate' minute: * hour: '*/4' job: '/etc/cron.daily/logro
- name: Add job triggering logs rotation for clusters.
cron:
cron_file: '/etc/crontab'
user: 'root'
name: 'logrotate'
minute: *
hour: '*/4'
job: '/etc/cron.daily/logrotate'
state: present
我想要完成的是添加分钟:*/5和小时:*如果dev在inventory_主机名中,则添加分钟:0和小时:*/4
有没有办法在分钟和小时参数中添加条件?
我是否可以使用模板处理此问题,但只需在上述任务中添加这两个参数?这是使用过滤器实现此目的的一种方法:
还没有听说过这个过滤器,但在这种情况下工作完美!比使用模板要好得多。非常感谢你!如前所述,这是处理问题的一种方法。这将不容易扩展,因为您有许多参数,用于许多模块。在这种情况下,将参数放在清单中并按主机/组进行拆分(仍然依赖默认值)可能是更好的选择。
- name: Add job triggering logs rotation for clusters.
vars:
is_dev: "{{ 'dev' in inventory_hostname }}"
cron:
cron_file: '/etc/crontab'
user: 'root'
name: 'logrotate'
minute: "{{ is_dev | ternary('*/5', '*') }}"
hour: "{{ (is_dev | ternary('*', '*/4' }}"
job: '/etc/cron.daily/logrotate'
state: present