Score:0

Puppet/Augeas - คำสั่ง ins ทำงานบน RH6 ล้มเหลวใน RH7

ธง cn

ฉันมีโครงสร้างนี้ในโมดูลหุ่นกระบอกเพื่อเพิ่มบรรทัด /etc/sudoers หลังจากบรรทัดสุดท้าย "ค่าเริ่มต้น":

  เพิ่ม { "sudoers.ssh_auth_sock" :
    เลนส์ => "Sudoers.lns",
    รวม => "/etc/sudoers",
    onlyif => "match Defaults/env_keep/var[. = 'SSH_AUTH_SOCK'] size==0",
    การเปลี่ยนแปลง => [
       # สร้างบรรทัดเริ่มต้นใหม่สำหรับตัวแปรสองตัว
       "ins Defaults หลัง Defaults[last()]",
       # ทำให้บรรทัดเริ่มต้นนี้เป็นประเภท +=
       "ล้างค่าเริ่มต้น[last()]/env_keep/append",
       # กำหนดค่าให้กับตัวแปรทั้งสอง
       "ตั้งค่าเริ่มต้น[last()]/env_keep/var[1] SSH_AUTH_SOCK",
    ]
  }

มันทำงานได้อย่างสมบูรณ์แบบบนเครื่อง RedHat 6 ของฉัน

ประกาศ: Augea[sudoers.ssh_auth_sock](provider=augeas):
--- /etc/sudoers 2021-10-12 13:30:52.880901115 +0000
+++ /etc/sudoers.augnew 2021-10-12 13:31:28.697931561 +0000
@@ -77,6 +77,7 @@
 # ค่าเริ่มต้น env_keep += "บ้าน"

 ค่าเริ่มต้น secure_path = /sbin:/bin:/usr/sbin:/usr/bin
+ค่าเริ่มต้น env_keep += SSH_AUTH_SOCK

 ## ถัดมาเป็นส่วนหลัก: ผู้ใช้สามารถเรียกใช้ซอฟต์แวร์ใดได้บ้าง

ประกาศ: /Stage[main]/Sudoers/Augeas[sudoers.ssh_auth_sock]/returns: ดำเนินการสำเร็จ

แต่มันล้มเหลวในเครื่อง RedHat 7 ของฉัน:

คำเตือน: Augea[sudoers.ssh_auth_sock](provider=augeas): การโหลดไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไปล้มเหลว ดูการดีบักสำหรับ /augeas//เอาต์พุตข้อผิดพลาด
ข้อผิดพลาด: /Stage[main]/Sudoers/Augeas[sudoers.ssh_auth_sock]: ไม่สามารถประเมิน: เกิดข้อผิดพลาดในการส่งคำสั่ง 'ins' ด้วยพารามิเตอร์ ["Defaults", "after", "/files/etc/sudoers/Defaults[last( )]"]/ข้อผิดพลาดในการส่งคำสั่ง 'ins' ด้วย params ["Defaults", "after", "/files/etc/sudoers/Defaults[last()]"]

ใครสามารถช่วยฉันเข้าใจสิ่งที่เปลี่ยนแปลงหรือสิ่งที่ฉันทำผิด เพื่อให้ตัวอย่างนี้ทำงานได้ในทั้งสองสภาพแวดล้อม

cn flag
`การโหลดล้มเหลว` ในบันทึกเป็นการบอกใบ้ว่า Augea ไม่สามารถแยกไฟล์อย่างน้อยหนึ่งไฟล์ได้ คุณสามารถเรียกใช้ `ข้อผิดพลาด augtool` และโพสต์ผลลัพธ์ได้หรือไม่
hymie avatar
cn flag
ขอบคุณ @rapink -- ปัญหาได้รับการแก้ไข
Score:1
ธง cn

ขอบคุณ @rapink

ข้อผิดพลาด augtool กล่าว

ข้อผิดพลาดใน /etc/sudoers:96.12 (parse_failed)
  เลนส์ซ้ำเข้าคู่น้อยกว่าที่ควร
  เลนส์: /usr/share/augeas/lenses/dist/sudoers.aug:530.10-.70:
    จับคู่ล่าสุด: /usr/share/augeas/lenses/dist/sep.aug:47.18-.40:
    ถัดไป (ไม่ตรงกัน): /usr/share/augeas/lenses/dist/sudoers.aug:500.16-501.47:

ดังนั้นฉันจึงตรวจสอบบรรทัดที่ 96 ของ /etc/sudoers และมันกล่าวว่า

@includedir /etc/sudoers.d

เห็นได้ชัดว่า, @includedir ตอนนี้เป็นไวยากรณ์ที่ถูกต้องนอกเหนือจากไวยากรณ์แบบเก่า #รวมผ ... แต่เลนส์ augeas (ของฉัน) ไม่รู้จักเวอร์ชันใหม่

(* View : includedir *)
ให้รวมir =
  [ คีย์ /#include(dir)?/ . ก.ย. สเปซ เก็บ Rx.fspath ออล ]

ฉันเปลี่ยน @ ถึง ก # ใน /etc/sudoers และดูเหมือนว่าจะแก้ปัญหาได้แล้ว

cn flag
ยอดเยี่ยม. หาก Augeas ล่าสุดไม่รองรับไวยากรณ์นี้ โปรดเปิดปัญหา (หรือแจ้ง PR เพื่อแก้ไข)

โพสต์คำตอบ

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