在playbook中使用带有运算符的条件语句.当我运行playbook时,它从不接受/验证条件,而是考虑“shmall”的最后一个set_fact值.
---
- hosts: sandBox
user: robo
become: yes
gather_facts: yes
tasks:
- debug: msg="{{ansible_memtotal_mb}}"
- name: SHMALL value for MEM less than 16G
set_fact:
shmall: 3670016
when: ansible_memtotal_mb|int <= 16384
- name: SHMALL value for MEM is between 16G and 32G
set_fact:
shmall: 7340032
when: ansible_memtotal_mb|int > 16384 and ansible_memtotal_mb|int <= 32768
- debug: var=shmall
================================================================================
SUDO password:
PLAY [sandBox] *****************************************************************
TASK [setup] *******************************************************************
ok: [uslv-sapp-lnx11]
TASK [debug] *******************************************************************
ok: [uslv-sapp-lnx11] => {
"msg": 7872
}
TASK [SHMALL value for MEM less than 16G] **************************************
ok: [uslv-sapp-lnx11]
TASK [SHMALL value for MEM is between 16G and 32G] *****************************
ok: [uslv-sapp-lnx11]
TASK [debug] *******************************************************************
ok: [uslv-sapp-lnx11] => {
"shmall": 7340032
}
PLAY RECAP *********************************************************************
uslv-sapp-lnx11 : ok=5 changed=0 unreachable=0 Failed=0
解决方法:
修复你的缩进. when不是set_fact动作的参数,而是任务的参数:
- name: SHMALL value for MEM less than 16G
set_fact:
shmall: 3670016
when: ansible_memtotal_mb|int <= 16384
- name: SHMALL value for MEM is between 16G and 32G
set_fact:
shmall: 7340032
when: ansible_memtotal_mb|int > 16384 and ansible_memtotal_mb|int <= 32768
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。