Score:0

Ansible: กระบวนการบังคับฆ่าและการออกจาก ansible-playbook ถ้าไม่สำเร็จทำอย่างไร

ธง cn

ฉันมีงานร้องสองงานซึ่งเป็นส่วนหนึ่งของ playbook ของฉัน

      - ชื่อ: "ตรวจสอบว่า httpd.service ไม่ได้ทำงานบนโหนด {{ ansible_hostname }}"
        เปลือก: "ps -ef | grep httpd"
        ลงทะเบียน: _ps_httpd
        กลายเป็น: จริง
      - ชื่อ: หยุด httpd คือรหัสทางออก eq ถึง 0
        เปลือก: "ฆ่า -9 $(ps -ef | grep httpd| awk '{พิมพ์ $2}')"
        เมื่อ: _ps_httpd.rc == 0
        กลายเป็น: จริง
        เพิกเฉยต่อข้อผิดพลาด: จริง

งานนี้สองงานที่ควรบังคับกระบวนการฆ่า ขณะนี้ฉันได้รับข้อผิดพลาด

"msg": "รหัสส่งคืนที่ไม่ใช่ศูนย์", "rc": -9

ฉันคิดถึงอะไรที่นี่ มีความคิดใดที่จะแก้ไขปัญหานี้

นอกจากนี้ ฉันต้องการเพิ่มตัวเลือกออกจาก ansible-playbook เรียกใช้หากไม่สำเร็จ

Score:0
ธง ca

เพื่อให้บรรลุเป้าหมายใน Ansible โดยทั่วไปแนะนำให้ใช้โมดูลบริการ บริการ, ซิสวินิท หรือ ระบบ. ในตัวอย่างเช่น

---
- โฮสต์: localhost
  กลายเป็น: ใช่
  makes_method: sudo

  Gather_facts: ใช่

  งาน:

  - ชื่อ: การรวบรวมข้อมูลการบริการ
    บริการ_ข้อเท็จจริง:

  - ชื่อ: ตรวจสอบให้แน่ใจว่าหยุดให้บริการแล้ว
    ระบบ:
      ชื่อ: httpd
      สถานะ: หยุด
      เปิดใช้งาน: ไม่
    เมื่อ: ("httpd.service" ในบริการ)

หากคุณต้องการใช้ เปลือก_module สำหรับฉันจำเป็นต้องทำงานมากกว่านี้

ในตัวอย่างสำหรับ จิงซ์ รับ PID ที่ถูกต้องก่อน เนื่องจากมีกระบวนการหลักและสี่กระบวนการของผู้ปฏิบัติงาน

- ชื่อ: รับ nginx PID
  เปลือก:
    cmd: "ps -C nginx -o pid --no-headers | หัว 1"
    เตือน: เท็จ
  เปลี่ยนแปลง_เมื่อ: เท็จ
  check_mode: เท็จ
  ลงทะเบียน: nginx_pid

นอกจากนี้ยังเป็นไปได้ที่จะทำสิ่งที่ต้องการ

- ชื่อ: รับ nginx PID
  เปลือก:
    cmd: "pidof nginx"
    เตือน: เท็จ
  เปลี่ยนแปลง_เมื่อ: เท็จ
  check_mode: เท็จ
  ลงทะเบียน: nginx_pids

- ชื่อ: แสดง PID
  แก้ปัญหา: 
    var: nginx_pids

- ชื่อ: ฆ่า nginx
  เปลือก:
    cmd: "ฆ่า -9 {{ nginx_pids }}"
  ...

เกี่ยวกับ

ฉันต้องการเพิ่มตัวเลือกออกจากการรัน ansible-playbook หากไม่สำเร็จ

ถึง สิ้นสุดการรัน playbook คุณสามารถใช้

- เมตา: end_play
  เมื่อ: condition_is_met

ใช้ ล้มเหลว_โมดูลถึง

- ชื่อ: งานล้มเหลวเนื่องจาก
  ล้มเหลว:
    msg: "{{ ข้อความล้มเหลว }}"
  เมื่อ: condition_is_met

หรือ ยืนยัน_โมดูล.

เกี่ยวกับรหัสออก (EC) หรือรหัสส่งคืน (RC) คุณอาจต้องตรวจสอบ ฉันจะรับรายการรหัสออก (และ/หรือรหัสส่งคืน) และความหมายสำหรับคำสั่ง/ยูทิลิตี้ได้อย่างไร.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา