Saltstack'ta Jinja çıktısı nasıl incelenir?


16

Ben SLStuz bir templated inşa etmeye çalışıyorum, ama bu gibi hatalara neden olan geçersiz sözdizimi yayan:

my-minion-id:
    - State 'system' in SLS 'network' is not formed as a list

Prensip olarak, mümkün olmalıdır nasılsa bir şekilde çıkışını ayrıştırmak için çalışır önce Jinja şablonunun çıktısını incelemek SLSdosyası. Jinja oluşturucu için bir Python modülü var salt.renderers.jinja, ancak CLI'de yürütmeye çalışırsam bir hata alıyorum:

# salt my-minion-id salt.renderers.jinja.render /srv/salt/network/init.sls
my-minion-id:
    'salt.renderers.jinja.render' is not available.
ERROR: Minions returned with non-zero exit code
# salt my-minion-id renderers.jinja.render /srv/salt/network/init.sls
my-minion-id:
    'renderers.jinja.render' is not available.
ERROR: Minions returned with non-zero exit code

Şablonumun çıktısını nasıl görebilirim? Hata ayıklamak bu kadar zor olmalı saçma görünüyor.

Yanıtlar:


11

Slsutil.renderer modülünü kontrol edin .

Bu istediğini yapmalı

salt my-minion-id slsutil.renderer /srv/salt/network/init.sls 'jinja'

Bu modül sadece sizin için compile_template işlevini çağırır.

Düzenleme: /srv/salt/network/init.sls, köle olarak ustayı hedeflemiyorsanız, muhtemelen aşağıdakileri yapmanız gerekecektir, minion yoludur.

salt minion-id cp.cache_file salt://network/init.sls
salt minion-id slsutil.renderer /var/cache/salt/minion/files/base/network/init.sls

veya önbellek_dosyasının tükettiği herhangi bir dosyayı gösterin.

2018.3 veya daha yeni bir sürüm kullanıyorsanız, salt://network/init.sls


Peki / srv / salt / network hangi yolda? Ustadaki yol mu? Minyon?
Mrten

Minyondaki bir yoldur. Sen yapabilir salt minion-id cp.cache_file salt://network/init.slsve daha sonra kölesine önbelleğe veya 2018.3 başlayan edildikten sonra geri tükürür dosyaya karşı çalışma slsutil.renderer, sadece belirtebilirsinizsalt://network/init.sls
gtmanfred

8

Yakından ilgili bir sorunla mücadele etmek için haftalar önce ne kadar zaman harcadığım göz önüne alındığında, keşke daha çabuk anlasaydım.

Çözüm salt.modules.cp.get_template, Tuz minyonunun dosyayı almasını, şablonlama motorunu oluşturmasını ve okunabilir bir yere yerleştirmesini sağlamak için kullanılıyor gibi görünüyor:

# salt my-minion-id cp.get_template salt://network/init.sls /root/network.sls template=jinja
my-minion-id:
    /root/network.sls

Oradan, my-minion-idana bilgisayara bağlanır ve yerleştirdiğiniz dosyayı incelersiniz /root/network.sls.

Bu mantıklı; salt.renderers.jinjaolduğu salt.renderersmodülleri CLI içindedir dan erişime sahipken, ad salt.modulesad.

Ayrıca veri görünürlüğü açısından da anlamlıdır; şablon oluşturma , tahılların ve benzerlerinin bulunduğu minyonda gerçekleşir ve henüz master'a minion kodu dönüşü keyfi çıktı yürüten bir modül görmüyorum (örneğin, CLI'da görüntülemek için); döndürülen veriler her zaman iyi yapılandırılmış ve özlüdür. (Böyle bir modül olabilir, ama ne olduğunu bilmiyorum. Test dosyalarını bir minyona bırakmak için tercih edilen bir çözüm olurdu.)

edit: @ gtmanfred'in cevabı çok daha iyi ve daha doğrudan ve bunu kabul ettim. Bunu bilgilendirme amacıyla burada bırakıyorum. En iyi çözüm değil, ama yine de çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.