Tầm quan trọng của một báo cáo nhiệm vụ Ansible rằng một cái gì đó đã thay đổi là gì?


20

Tôi có một nhiệm vụ kiểm tra xem quy trình của tôi có nghe trên cổng 8080 hay không và chỉ khi mã thoát không bằng 0, tôi mới chạy failvới một tin nhắn.

Khi dịch vụ đang chạy, nó báo cáo rằng trạng thái đã thay đổi. Tôi muốn nó nói ok. Một changedtrạng thái thực sự có nghĩa là gì trong Ansible?

Câu trả lời:


11

Bất cứ điều gì phụ thuộc vào một cái gì đó trên mục tiêu sẽ có trạng thái "thay đổi" khi được thực thi, ngay cả khi đó chỉ là một lệnh shell để lặp lại một cái gì đó.

Để chặn trạng thái "đã thay đổi", bạn có thể thêm dòng sau vào tác vụ:

changed_when: false

Điều này và những thứ khác có liên quan được liệt kê trên trang tài liệu ansible này .


27

Nhiệm vụ ansible nên idempotent . Ví dụ. nếu tác vụ không sửa đổi bất cứ điều gì, nó sẽ trả về okthay vì changed. Hầu hết các mô-đun và tác vụ dựng sẵn đã có, nhưng đối với các tác vụ như commandshellbạn cần trợ giúp một chút.

Đối với một nhiệm vụ hoàn toàn kiểm tra và không sửa đổi bất cứ điều gì, bạn nên thêm:

changed_when: False
always_run: yes

Cái sau cho phép tác vụ chạy ngay cả trong chế độ kiểm tra .

Để hoàn thiện, các tác vụ như vậy thường được kết hợp với một tác vụ khác thực hiện sửa đổi thực tế, ví dụ:

- command: check command that returns true when no change needed
  register: result
  changed_when: False
  always_run: yes
- command: modify command
  when: result.rc != 0

2
câu trả lời này cần được xác minh
thạc sĩ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.