Điểm:0

Ansible playbook khởi động lại máy chủ, đợi cho đến khi khởi động lại hoàn tất

lá cờ us

Tôi đang gặp sự cố khi thực thi tập lệnh shell với playbook ansible.
Sự cố: Tôi đang mất kết nối với máy chủ từ xa vì tập lệnh shell đang khởi động lại máy chủ.

Playbook Ansible của tôi

- tên: Xử lý khởi động lại
  máy chủ: tất cả
  trở thành: có
  
  nhiệm vụ:
    - tên: Thực thi tập lệnh 
      vỏ: bash testscript.sh
      lập luận:
        chdir: /home/ubuntu
      thông báo:
        - Đợi máy chủ khởi động lại
        
  xử lý:
    - tên: Đợi máy chủ khởi động lại
      local_action:
        mô-đun: wait_for
          máy chủ lưu trữ ={{ventory_hostname}}
          cổng = 22
          chậm trễ = 10
        trở thành: sai

Kịch bản shell của tôi:

#!/bin/bash
echo "Đang thực hiện một số nhiệm vụ"
tiếng vang "khởi động lại ngay bây giờ"
khởi động lại
tiếng vang "khởi động lại hoàn tất"
echo "Đang thực hiện thêm một số tác vụ"

Tôi gặp lỗi khi khởi động lại máy chủ từ xa

gây tử vong: [địa chỉ ip của tôi]: KHÔNG THỂ TẠO ĐƯỢC! => {
    "đã thay đổi": sai,
    "msg": "Không thể kết nối với máy chủ qua ssh: Đã đóng kết nối được chia sẻ với <địa chỉ ip của tôi>.",
    "không thể truy cập": đúng
}

Có thể xử lý khởi động lại được thực hiện bởi shell script và đợi kết nối cho đến khi máy chủ từ xa hoạt động trở lại không?

Cảm ơn.

lá cờ in
Có lý do nào để không sử dụng [mô-đun khởi động lại](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/reboot_module.html) không?
lá cờ in
Bạn nhận ra rằng các lệnh trong tập lệnh của mình sau khi `khởi động lại` sẽ không bao giờ được thực thi?
vik2595 avatar
lá cờ us
@GeraldSchneider, tôi sẽ cài đặt một công cụ cụ thể bao gồm các bước này. Thêm chi tiết về tập lệnh, Đó là đổi tên giao diện mạng và gán IP cụ thể. FYI: Chúng tôi không thể thay đổi bất cứ điều gì trong shell script. Vì vậy, tôi phải nghĩ cách khác để làm cho nó hoạt động.
vik2595 avatar
lá cờ us
@GeraldSchneider dường như nó đang thực thi, Vui lòng kiểm tra tập lệnh này để biết thêm chi tiết. https://github.com/magma/magma/blob/master/lte/gateway/deploy/agw_install_ubuntu.sh
Điểm:2
lá cờ in

Bạn nên sử dụng wait_for_connection thay thế.

nhiệm vụ:
  - tên: Thực thi tập lệnh 
    vỏ: bash testscript.sh
    lập luận:
      chdir: /home/ubuntu
  - tên: đợi
    wait_for_connection:
      chậm trễ: 10

Tôi khuyên bạn nên làm điều này trong một nhiệm vụ, không phải là một trình xử lý. Trình xử lý chỉ được thực thi sau khi tất cả các các tác vụ đã hoàn thành, vì vậy nếu bạn có các tác vụ theo sau tác vụ thực thi khởi động lại, chúng sẽ được thử trước khi playbook thậm chí bắt đầu chờ.

Ngoài ra, hãy sử dụng khởi động lại mô-đun, cái này tự động làm điều này.

vik2595 avatar
lá cờ us
Chắc chắn, hãy để tôi thử phương pháp này.

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