2017-04-06 20 views
0

プレイブックの下では、プレイブックを実行すると、 "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 

答えて

1

インデントを修正します。 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 
関連する問題