Điểm:0

Ansible: Làm cách nào để buộc xử lý và thoát khỏi ansible-playbook nếu không thành công?

lá cờ cn

Tôi có hai nhiệm vụ dưới đây như một phần trong vở kịch của mình

      - tên: "Xác minh httpd.service không chạy trên nút {{ ansible_hostname }}"
        vỏ: "ps -ef | grep httpd"
        đăng ký: _ps_httpd
        trở thành sự thật
      - tên: dừng httpd là mã thoát eq thành 0
        shell: "kill -9 $(ps -ef | grep httpd| awk '{print $2}')"
        khi: _ps_httpd.rc == 0
        trở thành sự thật
        bỏ qua_lỗi: đúng

Hai nhiệm vụ này buộc phải hủy quá trình. Hiện tại tôi đang nhận được lỗi

"msg": "mã trả về khác không", "rc": -9

Tôi bỏ lỡ điều gì ở đây? Bất cứ ý tưởng làm thế nào để có được giải quyết này?

Ngoài ra, tôi muốn thêm tùy chọn thoát khỏi ansible-playbook chạy nếu không thành công.

Điểm:0
lá cờ ca

Để đạt được mục tiêu trong Ansible, nói chung nên sử dụng các mô-đun dịch vụ, dịch vụ, sysvinit hoặc hệ thống. Trong ví dụ như

---
- máy chủ: localhost
  trở thành: có
  trở thành_method: sudo

  thu thập_sự thật: có

  nhiệm vụ:

  - tên: Thu thập thông tin dịch vụ
    dịch vụ_sự thật:

  - tên: Đảm bảo dịch vụ đã dừng
    hệ thống:
      tên: http
      trạng thái: đã dừng
      kích hoạt: không
    khi: ("httpd.service" trong dịch vụ)

Nếu bạn thích sử dụng vỏ bọc_module, đối với tôi cần nhiều công việc hơn.

ví dụ cho nginx lấy đúng PID trước, vì có một quy trình chính và bốn worker.

- tên: Nhận nginx PID
  vỏ bọc:
    cmd: "ps -C nginx -o pid --no-headers | đầu 1"
    cảnh báo: sai
  đã thay đổi khi: sai
  check_mode: sai
  đăng ký: nginx_pid

Nó cũng có thể làm một cái gì đó như

- tên: Nhận nginx PID
  vỏ bọc:
    cmd: "pidof nginx"
    cảnh báo: sai
  đã thay đổi khi: sai
  check_mode: sai
  đăng ký: nginx_pids

- tên: Hiển thị PID
  gỡ lỗi: 
    biến: nginx_pids

- tên: Giết nginx
  vỏ bọc:
    cmd: "giết -9 {{ nginx_pids }}"
  ...

Về

Tôi muốn thêm tùy chọn thoát khỏi ansible-playbook run nếu không thành công.

đến kết thúc quá trình chạy playbook bạn đã có thể sử dụng

- meta: end_play
  khi nào: điều_kiện_được_gặp

sử dụng Thất bại_mô-đun thành

- tên: Nhiệm vụ đã thất bại vì
  Thất bại:
    msg: "{{ fail_message }}"
  khi nào: điều_kiện_được_gặp

hoặc là khẳng định_module.

Về mã thoát (EC) hoặc mã trả về (RC), bạn có thể xem qua Làm cách nào để lấy danh sách mã thoát (và/hoặc mã trả về) và ý nghĩa của lệnh/tiện ích?.

Đă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.