ฉันประสบปัญหาขณะเรียกใช้เชลล์สคริปต์ด้วยเพลย์บุ๊กที่เข้าใจได้
ปัญหา: ฉันสูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลเนื่องจากเชลล์สคริปต์กำลังรีบูตเซิร์ฟเวอร์
Playbook Ansible ของฉัน
- ชื่อ: จัดการกับการรีบูต
โฮสต์: ทั้งหมด
กลายเป็น: ใช่
งาน:
- ชื่อ: ดำเนินการสคริปต์
เปลือก: ทุบตี testscript.sh
หาเรื่อง:
chdir: /home/ubuntu
แจ้ง:
- รอให้เซิร์ฟเวอร์รีสตาร์ท
ตัวจัดการ:
- ชื่อ: รอให้เซิร์ฟเวอร์รีสตาร์ท
local_action:
โมดูล: wait_for
โฮสต์={{ สินค้าคงคลัง_ชื่อโฮสต์ }}
พอร์ต = 22
ล่าช้า=10
กลายเป็น: เท็จ
เชลล์สคริปต์ของฉัน:
#!/bin/bash
echo "กำลังดำเนินการบางอย่าง"
echo "กำลังรีบูตทันที"
รีบูต
echo "รีบูตเสร็จสิ้น"
echo "กำลังดำเนินการเพิ่มเติม"
ข้อผิดพลาดที่ฉันได้รับขณะรีบูตเซิร์ฟเวอร์ระยะไกล
ร้ายแรง: [ที่อยู่ IP ของฉัน]: ไม่สามารถเข้าถึงได้! => {
"เปลี่ยนแปลง": เท็จ
"msg": "ไม่สามารถเชื่อมต่อกับโฮสต์ผ่าน ssh: ปิดการเชื่อมต่อที่ใช้ร่วมกันกับ <my-ip-address>",
"ไม่สามารถเข้าถึงได้": จริง
}
เป็นไปได้หรือไม่ที่จะจัดการกับการรีบูตซึ่งทำโดยเชลล์สคริปต์และรอการเชื่อมต่อจนกว่าเซิร์ฟเวอร์ระยะไกลจะเปิดใช้งานอีกครั้ง
ขอบคุณ.