2016-09-22 19 views
6

Tôi đang gặp phải sự cố silliest. Tôi không thể tìm ra cách kiểm tra boolean trong tệp tác vụ Ansible 2.2.Sử dụng True False với Ansible Khi khoản

Trong vars/main.yml, tôi có:

destroy: false 

Trong playbook, tôi có:

roles: 
    - {'role': 'vmdeploy','destroy': true} 

Trong tập tin công việc, tôi đã điều sau đây:

- include: "create.yml" 
    when: "{{ destroy|bool }} == 'false'" 

tôi đã thử các kết hợp khác nhau bên dưới:

when: "{{ destroy|bool }} == false" 
when: "{{ destroy|bool }} == 'false'" 
when: "{{ destroy|bool == false}}" 
when: "{{ destroy == false}}" 
when: "{{ destroy == 'false'}}" 
when: destroy|bool == false 
when: destroy|bool == 'false' 
when: not destroy|bool 

Trong tất cả các trường hợp trên, tôi vẫn nhận được:

statically included: .../vmdeploy/tasks/create.yml 

gỡ lỗi đầu ra:

- debug: 
    msg: "{{ destroy }}" 

--- 

ok: [atlcicd009] => { 
"msg": true 
} 

Các kết quả mong muốn, là nó sẽ bỏ qua bao gồm.

Trả lời

-1

bao gồm giữ xảy ra trước khi.

Vì vậy, tôi chỉ thực hiện tính năng động bao gồm.

---- defaults/main.yml 
mode: "create" 

---- tasks/main.yml 
- include: "{{ mode + '.yml' }}" 
1

Không cần sử dụng boolJinja filter khi giá trị của biến được xác định trong lưu trữ.

Để truyền các giá trị dưới dạng một số loại nhất định, chẳng hạn như khi bạn nhập chuỗi là "Đúng" từ vars_prompt và hệ thống không biết đó là giá trị boolean.

Vì vậy, một đơn giản

when: not destroy 

nên để các trick.

9

Để chạy một nhiệm vụ khi destroytrue:

--- 
- hosts: localhost 
    connection: local 
    vars: 
    destroy: true 
    tasks: 
    - debug: 
     when: destroy 

và khi destroyfalse:

--- 
- hosts: localhost 
    connection: local 
    vars: 
    destroy: false 
    tasks: 
    - debug: 
     when: not destroy 
Các vấn đề liên quan