Score:1

การแทรกตัวแปร Jinja ลงในสตริงที่อยู่ในเครื่องหมายคำพูด

ฉันกำลังสร้างคอนเทนเนอร์ Podman ที่รัน Samba Active Directory พร้อมรองรับ Bind9 และ Freeradius โดยใช้ Ansible และประสบปัญหาเล็กน้อย

Samba ทำงานได้ดีกับ DLZ_BIND เป็นแบ็กเอนด์ในคอนเทนเนอร์ของฉัน แต่ฉันต้องรวม Freeradius เข้ากับคอนเทนเนอร์ ดังนั้นฉันจึงสามารถรองรับการเข้าสู่ระบบผ่าน VPN ได้

ฉันพยายามสร้างเทมเพลตบรรทัดต่อไปนี้ /etc/freeradius/3.0/mods-available/mschap:

ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 
  --request-nt-คีย์ 
  --ชื่อผู้ใช้={mschap:ชื่อผู้ใช้} 
  --domain={{ ad_info.netbios_domain }} 
  --challenge=%{%{mschap:Challenge}:-00} 
  --nt-response=%{%{mschap:NT-Response}:-00}"

สำหรับแบบฝึกหัด คุณสามารถสันนิษฐานได้ว่าค่าของ {{ ad_info.netbios_domain }} เป็น ตัวอย่าง.

เป็นที่เดียวในไฟล์ที่ฉันใช้ตัวแปร Jinja

อย่างไรก็ตาม การเรียกใช้ ansible-playbook ทำให้ Ansible ระเบิดใส่หน้าฉัน เมื่อมันพยายามสร้างเทมเพลตไฟล์

ฉันคิดว่าเป็นเพราะตัวแปร Jinja ถูกแทรกในสตริง qouted? เนื่องจากเชลล์สคริปต์ BASH ที่มีบรรทัดต่อไปนี้จะไม่ระเบิดใน ansible:

SAMBA_ADMIN_PASSWORD="{{ ad_info.admin_password }}"

อะไรคือวิธีที่ถูกต้องในการใช้ Jinja เมื่อคุณมีสตริงที่ยกมา?

แก้ไข

ฉันสร้างเทมเพลตที่มีเฉพาะบรรทัดที่เป็นปัญหาและได้รับข้อผิดพลาดดังต่อไปนี้จาก ansible:

ล้มเหลว: [myhost.example.com] (item=etc/freeradius/3.0/mods-available/mschap) => 
{
  "ansible_loop_var": "รายการ", 
  "เปลี่ยนแปลง": เท็จ "รายการ": 
  "ฯลฯ/freeradius/3.0/mods-available/mschap-jinja", 
  "msg": "AnsibleError: ข้อผิดพลาดของเทมเพลตขณะสร้างเทมเพลตสตริง: คาดชื่อแท็ก 

  สตริง: ntlm_auth = \"/usr/bin/ntlm_auth 
    --allow-mschapv2 
    --request-nt-คีย์ 
    --ชื่อผู้ใช้={mschap:ชื่อผู้ใช้} 
    --domain={{ ad_info.netbios_domain }} 
    --challenge=%{%{mschap:Challenge}:-00} 
    --nt-response=%{%{mschap:NT-Response}:-00}\"
"}
Score:2
ธง br

การรวมกัน {% เปิด แถลงการณ์จินจา. เพื่อหลีกเลี่ยงการตีความนี้ ให้ใส่วงเล็บปีกกาลงในตัวแปร เช่น

    BR: '{{ "{" }}'

และใช้ในแม่แบบ

เปลือก> แมว mschap.j2
ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 
  --request-nt-คีย์ 
  --ชื่อผู้ใช้={mschap:ชื่อผู้ใช้} 
  --domain={{ ad_info.netbios_domain }} 
  --challenge=%{{ BR }}%{mschap:Challenge}:-00} 
  --nt-response=%{{ BR }}%{mschap:NT-Response}:-00}"

งานด้านล่างควรทำงาน

    - แม่แบบ:
        src: mschap.j2
        ปลายทาง: mschap
      วาร์:
        ad_info:
          netbios_domain: ตัวอย่าง

ให้

เปลือก> แมว mschap
ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 
  --request-nt-คีย์ 
  --ชื่อผู้ใช้={mschap:ชื่อผู้ใช้} 
  --domain=ตัวอย่าง 
  --challenge=%{%{mschap:Challenge}:-00} 
  --nt-response=%{%{mschap:NT-Response}:-00}"
ขอขอบคุณ. ฉันรู้สึกว่าจำเป็นต้องหลีกเลี่ยงอักขระ `%{` อย่างน้อยบางตัวเนื่องจาก jinja ก็ใช้ไวยากรณ์นั้นสำหรับข้อความเช่นกัน อย่างน้อยฉันก็ยังมีทางไปต่อจากที่นี่ :-)

โพสต์คำตอบ

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