2015-03-10 8 views
6

में उत्तर लिखने योग्य चर मेरे पास एक विशिष्ट उत्तरदायी चर संरचना है जिसे मैं अपने मेजबान पर एक यम फ़ाइल में वॉल्ट से प्राप्त करना चाहता हूं।वाईएएमएल फ़ाइल

secrets: 
    psp1: 
    username: this 
    password: that 
    secret_key: 123 
    ... 

मैं सामग्री लगभग पूरी तरह से वर्तमान वातावरण के आधार पर बदलता के बाद से, उत्पादन के लिए एक "सामान्य" टेम्पलेट जो कुछ भी "राज़" पल में शामिल की तरह कुछ की जरूरत है:

इस तरह की एक संरचना मान देता है।

सबसे आसान समाधान मैं सोच सकते हैं उत्पादन के लिए इस तरह की एक टेम्पलेट में पूरी संरचना है:

# config/secrets.yml 
{{ secrets | to_yaml }} 

लेकिन jinja2 to_yaml फिल्टर केवल प्रथम स्तर "yamlify" करता है, गहरी nestings json में outputted हैं ।

क्या मैं किसी भी तरह से उस समस्या के आसपास काम कर सकता हूं? क्या मैं चाहता हूं कि हासिल करने का कोई आसान तरीका है?

किसी भी मदद के लिए धन्यवाद!

+0

ओवरराइड नहीं कर सकते JSON YAML का एक मान्य सबसेट है, तो आप अभी भी YAML हो रही है। – jwodder

+0

@jwodder Arg! बेशक आप सही हैं। मुझे नहीं पता कि मैं हमेशा इस तथ्य को क्यों नजरअंदाज करता हूं। धन्यवाद। –

उत्तर

12
  1. जैसा कि ज्वॉडर ने कहा, यह मान्य है।
  2. यदि आप to_yaml (to_nice_yaml के बजाय) का उपयोग कर रहे हैं तो आपके पास उत्तरदायी रूप से पुराना इंस्टॉल है, अब अपग्रेड करने का समय है।
  3. उपयोग to_nice_yaml
  4. यह काम करता है, जो आम तौर पर उन्हें अंतर्निहित अजगर मॉड्यूल कॉल को भेज देगा फिल्टर करने के लिए अपने स्वयं के kwargs पारित करने के लिए संभव है। अपने मामले के लिए this one की तरह। तो कुछ इस तरह:

    {{ secrets | to_nice_yaml(width=50, explicit_start=True, explicit_end=True) }} 
    

    केवल पकड़ आप indent=4, allow_unicode=True, default_flow_style=False

+0

यह लोचदार खोज के लिए मेरी प्लेबुक के लिए बहुत अच्छा काम करता है, एक सरणी –

+1

से पूरी कॉन्फ़िगरेशन को हटा देता है यह एक स्वरूपण बग नहीं है, यह एक मार्कडाउन सुविधा है। एक सूची आइटम के अंदर कोड डबल इंडेंट होना चाहिए। –

+0

ध्यान दें कि 'इंडेंट' अब कम से कम उत्तर 2.2.0 के रूप में ओवरराइड किया जा सकता है (मैं इसे एक प्रोजेक्ट के लिए कोडिंग मानकों का पालन करने के लिए 2 रिक्त स्थान इंडेंट करने के लिए उपयोग करता हूं)। देखें: https://github.com/ansible/ansible/pull/17085 – geerlingguy

संबंधित मुद्दे