Với giải pháp được chấp nhận, ngay cả khi bạn bỏ qua lỗi này, bạn vẫn sẽ nhận được kết quả báo lỗi màu đỏ xấu xí vào các nhiệm vụ đầu tiên nếu không có trận đấu:
TASK: [Check whether /tmp/my.conf contains "127.0.0.1"] ***********************
failed: [localhost] => {"changed": false, "cmd": "grep -Fxq "127.0.0.1" /tmp/my.conf", "delta": "0:00:00.018709", "end": "2015-09-27 17:46:18.252024", "rc": 1, "start": "2015-09-27 17:46:18.233315", "stdout_lines": [], "warnings": []}
...ignoring
Nếu bạn muốn đầu ra ít tiết, bạn có thể sử dụng awk
thay vì grep
. awk
sẽ không trả về một lỗi trên một tổ chức phi trận đấu, có nghĩa là nhiệm vụ kiểm tra đầu tiên dưới đây sẽ không lỗi bất kể một trận đấu hoặc không phù hợp:
- name: Check whether /tmp/my.conf contains "127.0.0.1"
command: awk /^127.0.0.1$/ /tmp/my.conf
register: checkmyconf
changed_when: False
- name: Greet the world if /tmp/my.conf contains "127.0.0.1"
debug: msg="Hello, world!"
when: checkmyconf.stdout | match("127.0.0.1")
ý rằng nhiệm vụ thứ hai của tôi sử dụng bộ lọc phù hợp như awk trả về chuỗi phù hợp nếu nó tìm thấy kết quả phù hợp.
Các lựa chọn ở trên sẽ cho kết quả sau bất kể nhiệm vụ kiểm tra có một trận đấu hay không:
TASK: [Check whether /tmp/my.conf contains "127.0.0.1"] ***********************
ok: [localhost]
IMHO đây là một cách tiếp cận tốt hơn vì bạn sẽ không bỏ qua các lỗi khác trong nhiệm vụ đầu tiên của bạn (ví dụ: nếu tập tin được chỉ định không tồn tại).
OK. Bạn đã sử dụng mô-đun lệnh. Nó sẽ hoạt động. –
Tôi thừa nhận đây không phải là một giải pháp tối ưu, bởi vì khó có thể chuyển nó sang Windows. Hãy để tôi xem nếu có bất cứ điều gì khác ... Không, tôi không thể tìm thấy bất kỳ cách nào khác. –
Tôi không nghĩ check_mode là hợp lệ ở đây, vì nó chỉ bỏ qua thực hiện kiểm tra. –