วิธีการเปิดใช้งานบริการ instantd ของ systemd ด้วย puppet


9

ฉันได้รับบริการหุ่นกระบอกต่อไปนี้:

service { "getty@ttyUSB0.service": 
    provider => systemd,
    ensure => running,
    enable => true,
}

เมื่อฉันพยายามใช้การกำหนดค่านี้กับลูกค้าของฉันมันจะพ่นข้อผิดพลาดต่อไปนี้:

ข้อผิดพลาด: /Stretchardmain เหมือนกัน //Node ชัดpuppetclientlike/Serviceออสเตรียgetty@ttyUSB0.service Same/enable: เปลี่ยนจาก false เป็นจริงล้มเหลว: ไม่สามารถเปิดใช้งาน getty@ttyUSB0.service:

บริการทำงานได้ดีและฉันสามารถตรวจสอบให้แน่ใจว่ามันเริ่มต้นในการบูตระบบโดยเพิ่ม symlink ใน getty.target.wants:

ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttyUSB0.service

ของแหล่งที่มาฉันสามารถไปข้างหน้าและลบ "enable => true" จากคำจำกัดความบริการและรวม symlink ด้วยตนเองในการกำหนดค่าหุ่นเชิด แต่หุ่นไม่ควรดูแลเรื่องนี้หรือไม่ ฉันกำลังทำอะไรผิดอย่างมหันต์?

คำตอบ:


6

ผู้ให้บริการ systemd ใน Puppet วันนี้ใช้เพียงสองคำสั่งสำหรับenableสถานะบริการ:

  • systemctl is-enabled <unit>ตรวจสอบรหัสส่งคืนสำหรับสถานะเปิดใช้งานปัจจุบัน
  • systemctl enable/disable <unit> เพื่อเปลี่ยน

คำสั่ง enable พ่นข้อผิดพลาดเมื่อคุณเปิดใช้งานอินสแตนซ์ของบริการ getty @ ที่ไม่มีอยู่:

$ sudo systemctl enable getty@ttyUSB0.service
Failed to issue method call: No such file or directory

นี่เป็นสาเหตุของข้อผิดพลาดที่แสดงใน Puppet (แม้ว่า stderr จะไม่ปรากฏขึ้น)

ดูเหมือนว่าฉันจะมีช่องว่างใน systemd ซึ่งคุณไม่สามารถเปิดใช้งานอินสแตนซ์ใหม่ของเทมเพลตได้ มีBZ # 752774 ใน Fedora อยู่แล้ว แต่ความคิดเห็นแนะนำว่าอาจจะไม่ถูกเพิ่มในเร็ว ๆ นี้

คุณอาจจะดีกว่าการยื่นคำขอฟีเจอร์จาก Puppet เพื่อเพิ่มการสนับสนุนโดยเฉพาะสำหรับการเปิดใช้งานอินสแตนซ์ใหม่ ในคำขอคุณสมบัติของคุณฉันขอแนะนำให้เชื่อมโยงไปยังคำอธิบายของ Lennartสำหรับอินสแตนซ์หน่วยสำหรับพื้นหลัง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.