如果 Ansible 中参数的条件
If conditions for parameters in Ansible
这是将 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/logrotate'
state: present
我想要完成的是如果dev
在inventory_hostname
中添加minute: */5
和hour: *
,否则添加minute: 0
和hour: */4
.
有没有办法在分钟和小时参数中添加条件?
我可以使用模板处理这个问题,而只是在提到的任务中添加这两个参数吗?
这是使用 ternary
过滤器实现此目的的一种方法:
- 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
这是将 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/logrotate'
state: present
我想要完成的是如果dev
在inventory_hostname
中添加minute: */5
和hour: *
,否则添加minute: 0
和hour: */4
.
有没有办法在分钟和小时参数中添加条件? 我可以使用模板处理这个问题,而只是在提到的任务中添加这两个参数吗?
这是使用 ternary
过滤器实现此目的的一种方法:
- 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