2015-01-06 13 views
9

Nhìn vào tài liệu hướng dẫn về xử lý Ansible error handlingCó một số Ansible tương đương với "failed_when" cho sự thành công

tôi chỉ nhìn thấy một cách để thất bại các fail_when trích lỗi, tôi đang tự hỏi nếu có cách nào để làm đối diện.

cái gì đó trông như thế này:

- name: ping pong redis 
    command: redis-cli ping 
    register: command_result 
    succees_when: "'PONG' in command_result.stderr" 

Cảm ơn.

Trả lời

5

Tôi nghĩ có thể assert module là những gì bạn muốn.

mới trong phiên bản 1.5

Ví dụ:

- assert: { that: "ansible_os_family != 'RedHat'" } 
12

Có vẻ như là không có tính năng như vậy, ít nhất là đề nghị của tôi trên mailing list vẫn chưa được trả lời:

https://groups.google.com/forum/#!topic/ansible-project/cIaQTmY3ZLE

gì có thể giúp đỡ cần biết là failed_when cư xử khác nhau với ngữ nghĩa của nó:

- name: ping pong redis 
    command: redis-cli ping 
    register: command_result 
    failed_when: 
    - "'PONG' not in command_result.stderr" 
    - "command_result.rc != 0" 

sẽ không không thành công nếu mã trả về bằng 0 và không có 'PONG' trong stderr. Vì vậy, nó sẽ vượt qua nếu bất kỳ danh sách nào là False

+4

Cần lưu ý rằng bạn cũng có thể luôn luôn chỉ quấn bất kỳ biểu thức boolean trong dấu ngoặc và tiền tố nó với "không" để có được những tác dụng tương tự . Ví dụ: 'không (url | kết hợp ('http://example.com/.*'))'. Chỉ ra rằng kể từ khi nó được loại ẩn ở đây bởi vì bạn đang sử dụng inline 'không in' và'! = ', Trong khi nói chung không có nhà khai thác nội tuyến đặc biệt. –

+0

Điều này rất khó đọc nhưng nó hoạt động tốt. –

Các vấn đề liên quan