Score:0

วิธีทำให้ชุดงาน Ansible ทำงานบน Cluster Node - โหนดต่อโหนด

ธง cn

ฉันมี playbook ansible ซึ่งมีลักษณะดังต่อไปนี้ ฉันต้องการ เริ่มต้นการอัปเกรด Zero Downtime และ ขั้นตอนการอัปเกรด Zero Downtime เสร็จสมบูรณ์ จะทำงานหนึ่งครั้งเพื่อทำให้ \remove cluser เข้าสู่โหมดอัปเกรด นอกจากนี้ฉันต้องการงานทั้งหมดเข้า ปิดกั้น จะทำงานบนโหนดเดียวเท่านั้นและดำเนินการต่อไปยังโหนดถัดไปเมื่อเราได้รับ HTTP 200

คุณช่วยตรวจสอบไฟล์ yml ได้ไหม ปัจจุบันฉันได้รับ ข้อผิดพลาด! 'uri' ไม่ใช่แอตทริบิวต์ที่ถูกต้องสำหรับบล็อก และหากคุณมีข้อเสนอแนะเพื่อปรับปรุงให้ดีขึ้น

---
- ชื่อ: เริ่มต้นการอัปเกรด Zero Downtime
  โฮสต์: atl
  อนุกรม: 1
  Gather_facts: เท็จ
  vars_files:
    vars.yml
  งาน:
   - ชื่อ: รับสถานะคลัสเตอร์
     run_once: จริง
     ยูริ:
      URL: https://{{ base_url }}.XXX.com/rest/api/2/cluster/zdu/state
      ส่วนหัว:
       ประเภทเนื้อหา: application/json
      force_basic_auth: จริง
      validate_certs: เท็จ
      ผู้ใช้: XXX
      รหัสผ่าน: XXX
     ลงทะเบียน: การตอบสนอง
  # - ชื่อ: การแก้ปัญหา
  # แก้ไขข้อบกพร่อง: var=response
  # run_once: จริง
   - ชื่อ: ทริกเกอร์ Zero Downtime upgrade API
     run_once: จริง
     ยูริ:
      URL: https://{{ base_url }}.XXX.com/rest/api/2/cluster/zdu/start
      วิธีการ: โพสต์
      validate_certs: เท็จ
      ส่วนหัว:
       ประเภทเนื้อหา: application/json
      force_basic_auth: จริง
      ผู้ใช้: XXX
      รหัสผ่าน: XXX
      สถานะ_รหัส: 201
# การลงทะเบียน: การตอบสนอง
     เมื่อ: response.json.state == 'เสถียร'
  # - ชื่อ: การแก้ปัญหา
  # run_once: จริง
  # แก้ไขข้อบกพร่อง: var=response
   - บล็อก:
      - ชื่อ: สร้าง dir สำหรับการกำหนดค่าสำรอง
        ไฟล์:
          เส้นทาง: "{{ atl_backup_conf }}"
          สถานะ: ไดเร็กทอรี
          โหมด: '0755'
          เจ้าของ: atl
          กลุ่ม: atl
      - ชื่อ: ไฟล์การกำหนดค่าสำรอง
        สำเนา:
          src: "{{ รายการ }}"
          ปลายทาง: "{{ atl_backup_conf }}"
    # สำรอง: จริง
          remote_src: จริง
          เจ้าของ: atl
          กลุ่ม: atl
        with_items:
          - "{{ atl_app }}/bin/setenv.sh"
        เพิกเฉยต่อข้อผิดพลาด: จริง
      - ชื่อ: "หยุดบริการ atl บนโหนด {{ ansible_hostname }} atl"
        #shell: /etc/init.d/atl หยุด
        ระบบ:
          ชื่อ: atl
          สถานะ: หยุด
        กลายเป็น: ใช่
- ชื่อ: Zero Downtime Upgrade ขั้นตอนที่เสร็จสมบูรณ์
     โฮสต์: atl
     vars_files:
      vars.yml
     งาน: 
     - ชื่อ: ทริกเกอร์ Zero Downtime upgrade API เปลี่ยนเป็นสถานะ Stable
       run_once: จริง
       ยูริ:
        URL: https://{{ base_url }}.XXX.com/rest/api/2/cluster/zdu/approve
        วิธีการ: โพสต์
        validate_certs: เท็จ
        ส่วนหัว:
          ประเภทเนื้อหา: application/json
        force_basic_auth: จริง
        ผู้ใช้: XXX
        รหัสผ่าน: XXX
        status_code: 409 , 200

Score:1
ธง in

คุณพลาดการพุ่งต่อหน้า บล็อก.

การลบแอตทริบิวต์ทั้งหมดของคุณจะเป็นดังนี้:

  งาน:
  - ชื่อ: รับสถานะคลัสเตอร์
  - ชื่อ: ทริกเกอร์ Zero Downtime upgrade API
    บล็อก:
# ^-- ขีดหายไป
      - ชื่อ: "อัปเกรด {{ ansible_hostname }} โหนด atl"
      - ชื่อ: สร้าง dir สำหรับการกำหนดค่าสำรอง
      - ชื่อ: "หยุดบริการ atl บนโหนด {{ ansible_hostname }} atl"
      - ชื่อ: ติดตั้งเวอร์ชัน atl ใหม่
    - ชื่อ: กำหนดค่าบริการ systemd
# ^-- เยื้องไม่ถูกต้อง
      - ชื่อ: เปิดใช้งานการโหลดซ้ำและเริ่ม atl.service
      - ชื่อ: การตรวจสุขภาพ - เรียกใช้สถานะโหนด GET

อย่างที่คุณเห็น, บล็อก ปัจจุบันเป็นแอตทริบิวต์สำหรับงานก่อนหน้า ซึ่งควรอยู่ในระดับของ งาน แทน.

นอกจากนี้ งานของคุณ กำหนดค่าบริการ systemd ไม่เยื้องอย่างถูกต้อง ควรอยู่ในระดับเดียวกับงานอื่นๆ

  งาน:
  - ชื่อ: รับสถานะคลัสเตอร์
  - ชื่อ: ทริกเกอร์ Zero Downtime upgrade API
  - บล็อก:
# ^-- เพิ่มเส้นประที่ขาดหายไป
      - ชื่อ: "อัปเกรด {{ ansible_hostname }} โหนด atl"
      - ชื่อ: สร้าง dir สำหรับการกำหนดค่าสำรอง
      - ชื่อ: "หยุดบริการ atl บนโหนด {{ ansible_hostname }} atl"
      - ชื่อ: ติดตั้งเวอร์ชัน atl ใหม่
      - ชื่อ: กำหนดค่าบริการ systemd
# ^-- เยื้องอย่างถูกต้อง
      - ชื่อ: เปิดใช้งานการโหลดซ้ำและเริ่ม atl.service
      - ชื่อ: การตรวจสุขภาพ - เรียกใช้สถานะโหนด GET

YAML พิถีพิถันมากเกี่ยวกับการเยื้อง

cn flag
`- ชื่อ: เริ่มต้นการอัปเกรด Zero Downtime โฮสต์: atl อนุกรม: 1 Gather_facts: เท็จ vars_files: vars.yml งาน: - ชื่อ: ทริกเกอร์ Zero Downtime upgrade API - บล็อก: - ชื่อ: "อัปเกรด {{ ansible_hostname }} โหนด atl" - ชื่อ: สร้าง dir สำหรับการกำหนดค่าสำรอง - ชื่อ: "หยุดบริการ atl atl โหนด" - ชื่อ: การตรวจสุขภาพ - เรียกใช้สถานะโหนด GET ลองใหม่: 720 ล่าช้า: 5 - ชื่อ: Zero Downtime Upgrade ขั้นตอนที่เสร็จสมบูรณ์ โฮสต์: atl งาน: - ชื่อ: ทริกเกอร์การอัปเกรด Zero Downtime run_once: จริง ยูริ:`
cn flag
ขอบคุณสำหรับการตอบกลับ ไม่แน่ใจว่าฉันจะทำให้อ่านง่ายขึ้นในพื้นที่แสดงความคิดเห็นได้อย่างไร?! ฉันต้องการ 2 คำสั่งแรกภายใต้ภารกิจ: จะทำงานครั้งเดียว แต่คำสั่งทั้งหมดภายใต้ - บล็อก: จะเป็น exec บนโหนดทั้งหมด แต่ **โหนดต่อโหนด** และในตอนท้ายอีกครั้งจาก **อัปเกรดขั้นตอนที่เสร็จสมบูรณ์** จะเป็น เรียกใช้หนึ่งครั้งบนโหนดใดโหนดหนึ่ง
in flag
คุณไม่สามารถทำให้อ่านได้ในความคิดเห็น หากคุณมีสิ่งที่จะเพิ่มในคำถามที่มีอยู่ ให้แก้ไข หากคุณพบปัญหาใหม่ จะเป็นการดีกว่าที่จะยอมรับคำตอบที่ช่วยคุณและถามคำถามใหม่กับปัญหาใหม่
cn flag
เมื่อฉันเรียกใช้ playbook ฉันได้รับข้อผิดพลาด: `ERROR! ไม่พบโมดูล/การดำเนินการในงาน ข้อผิดพลาดดูเหมือนจะอยู่ใน main_new.yml': บรรทัดที่ 41 คอลัมน์ 9 แต่อาจ อยู่ที่อื่นในไฟล์ขึ้นอยู่กับปัญหาทางไวยากรณ์ที่แน่นอน บรรทัดที่ละเมิดดูเหมือนจะเป็น: - บล็อก: - ชื่อ: อัปเกรดโหนด atl ^ ที่นี่ ` ฉันใช้ ansible-playbook 2.10.9 คุณแน่ใจสำหรับไวยากรณ์โมดูล `- block:` หรือไม่ ฉันเห็นว่ามี `block:` อยู่โดยไม่มี -
in flag
ใช่ [ฉันแน่ใจ](https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html)
in flag
เราไม่สามารถบอกคุณได้ว่ามีอะไรผิดปกติโดยไม่ดูสถานะปัจจุบันของ playbook ของคุณ
cn flag
ขออภัย ฉันไม่สามารถแบ่งปันที่นี่ได้เนื่องจากความคิดเห็นไม่สามารถอ่านได้ มีความคิดอย่างไรที่ฉันจะแบ่งปันสถานะปัจจุบัน ?
in flag
อย่างที่ฉันบอกคุณไปแล้ว: แก้ไขคำถามของคุณ อย่าลบสิ่งที่มีอยู่แล้ว เพียงเพิ่มด้านล่าง
cn flag
มันทำให้ฉันเกิดข้อผิดพลาดขณะพยายามเพิ่ม ดังนั้นฉันจึงอัปเดตตามความคิดเห็นล่าสุดของคุณ
cn flag
ฉันแค่ต้องการให้เราอยู่ในหน้าเดียวกัน - ฉันต้องการงานทั้งหมดภายใต้ 'get Cluster state' และ 'get Cluster state' จะเป็น exec หนึ่งครั้ง (run_once=true) และงานทั้งหมดภายใน -block: จะเป็น exec node by node ฉันหมายถึงก่อนทำงานทั้งหมดบนโหนดแรกในกลุ่มโฮสต์ atl เมื่อโหนดขึ้นหมายความว่าฉันได้รับ HTTP=200 มันสามารถดำเนินการต่อไปยังโหนดถัดไปในกลุ่มโฮสต์ atl และอื่น ๆ เมื่อเสร็จสิ้นงาน '-block:' จะสามารถดำเนินการต่อและเรียกใช้งานภายใต้ 'ขั้นตอนที่เสร็จสิ้นการอัปเกรดเป็นศูนย์ดาวน์ไทม์' บนโหนดเดียวเท่านั้น (run_once=true) ฉันหวังว่าจะชัดเจนกว่านี้
cn flag
ขอบคุณครับ จัดการได้แล้ว

โพสต์คำตอบ

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