Điểm:0

Làm cho một nhiệm vụ bị bỏ qua hiển thị là "OK"

lá cờ ru
jdm

Tôi có một số tác vụ ansible được chạy trong hai phần. Phần đầu tiên đặt điều kiện và phần thứ hai sử dụng khi nào để thực hiện có điều kiện. Ví dụ giả:

- tên: kiểm tra nếu cài đặt
  chỉ huy: (...)
  đăng ký: is_install

- tên: chạy tập lệnh cài đặt
  khi nào: is_install.stdout == "có"
  chỉ huy: (...)

Nhiệm vụ thứ hai hiển thị là "đã bỏ qua". Điều này không thực sự đúng, tôi đã không từ bỏ cài đặt, nhưng xác nhận rằng nó đã được thực hiện xong, vì vậy nó sẽ hiển thị là "OK". Nó sẽ chỉ hiển thị "bỏ qua" nếu máy chủ nhất định không cần bước này. Tôi biết đây chỉ là mỹ phẩm, nhưng tôi vẫn muốn biết liệu có cách nào để khiến nó nói "OK" hay không.

Tôi đã thử thiết lập đã thay đổi_khi đến Sai. Trong khi điều này đặt kết quả thành OK, nó vẫn chạy lệnh. Ai đó đã yêu cầu một được_khi nào cài đặt, nhưng nó đã bị từ chối và tôi không chắc các nhà phát triển đã hiểu yêu cầu đó.

U880D avatar
lá cờ ca
Từ mô tả của bạn, tôi hiểu rằng bạn muốn cài đặt hoặc định cấu hình "thứ gì đó" trên (các) nút từ xa. Bạn muốn xác nhận trong lần chạy tiếp theo của nhiệm vụ rằng đó vẫn là trường hợp. Đối với tôi, có vẻ như cài đặt một gói không cần thiết và để đạt được mục tiêu này, không cần kiểm tra `bỏ qua` `ok_when`.
lá cờ ru
jdm
Đúng rồi nhưng cài không qua apt, pip v.v nên không dùng task chuyên dụng được. Trong trường hợp chung, tôi có hai lệnh trình bao, một lệnh cho tôi biết liệu một hành động có cần thiết hay không và một lệnh thực hiện hành động.Có vẻ như đây sẽ là một trong những điều cơ bản nhất bạn có thể làm trong ansible.
U880D avatar
lá cờ ca
Vì không có thông tin nào được cung cấp về "thứ gì đó" có thể là gì nên tôi chỉ có thể đoán một số trường hợp. Vì Ansible là một công cụ quản lý cấu hình mà người ta khai báo trạng thái, nên các tác vụ thường được tổ chức để đảm bảo rằng một thứ gì đó ở trạng thái nhất định. Với suy nghĩ này, trình cài đặt (tập lệnh) có thể chạy hai lần và không hoạt động. Trong hầu hết các trường hợp, không cần kiểm tra trước.
U880D avatar
lá cờ ca
Cũng có thể kiểm tra ngay trong lệnh trình bao của bạn như đối với `needs-restarting -r || /usr/sbin/shutdown -r +1`, hãy để lệnh chạy nếu cần và cung cấp phản hồi cho môi trường Ansible trở lại thông qua mã trả về, thiết bị xuất chuẩn, thiết bị xuất chuẩn.
Điểm:2
lá cờ ng

Tôi không thể đưa ra giải pháp chung ở đây. Nhưng nếu các tác vụ thực sự cài đặt thứ gì đó, bạn có thể xóa phần đầu tiên và thêm tạo ra sang phần thứ hai để thực hiện kiểm tra.

- tên: chạy tập lệnh cài đặt
  tạo: /path/to/installation
  chỉ huy: (...)
lá cờ ru
jdm
Vâng, đó dường như là giải pháp ý thức hệ. Cách khác là viết một mô-đun tùy chỉnh tự biết cách kiểm tra "OK". Thật kỳ lạ là không có cách đơn giản nào để định nghĩa nó trong YAML.
U880D avatar
lá cờ ca
Đúng vậy, đó là những gì [`tham số mô-đun lệnh` `tạo`](https://docs.ansible.com/ansible/latest/collections/ansible/buildin/command_module.html#parameter-creates) hoặc mô-đun [`shell` tham số `creates`](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/shell_module.html#parameter-creates) dành cho.Xem thêm ví dụ [ansible/modules/command.py](https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/command.py), "_trong khi bản thân lệnh là tùy ý và không thể tùy thuộc vào ngữ nghĩa của chế độ kiểm tra, nó sẽ thêm các tùy chọn C(tạo)/C(xóa) làm giải pháp thay thế_".
Điểm:1
lá cờ cn

khi nào: đánh giá sai dẫn đến trạng thái bị bỏ qua trong nhiệm vụ đó. In một cái gì đó khi bỏ qua đến từ plugin gọi lại tiêu chuẩn. Đối với các cuộc gọi lại dựa trên mặc định, điều này có thể bị vô hiệu hóa trên toàn cầu với display_skipped_hosts mục cấu hình. Xem các tài liệu: mặc định gọi lại ansible-doc -t

Một giải pháp tao nhã có thể là bọc thứ này trong trình quản lý gói thực và cài đặt thứ đó. Một số mô-đun trình quản lý gói idempotent tồn tại cho Ansible.

Hoặc, tập lệnh cài đặt có thể được thực hiện an toàn để chạy lại và trả về mã bằng 0 khi thành công.


Mặc dù tôi không đại diện cho các nhà phát triển, nhưng họ thận trọng trong việc thêm các tính năng vào cốt lõi. Và có thể họ không thấy vấn đề với một nhiệm vụ được báo cáo là bị bỏ qua, không phải mọi nhiệm vụ của mọi lần chơi đều được chạy.

khi nào: kiểm soát nếu một nhiệm vụ chạy. đã thay đổi_khi:fail_khi: sửa đổi trạng thái của một tác vụ sau khi nó chạy, chẳng hạn như dựa trên mã trả về hoặc tiêu chuẩn. Những điều này cùng nhau cung cấp quyền kiểm soát nếu một tác vụ ở trạng thái thay đổi hoặc không thành công, ngay cả đối với các tác vụ lệnh chung.

Để kiểm soát nhiều hơn đối với tính bình thường, hãy sử dụng một mô-đun ít chung chung hơn. Và nếu bạn vẫn cảm thấy khó chịu với những gì được in, hãy xem xét plugin gọi lại tùy chỉnh.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.