Saya memiliki templated SLS
di Salt yang saya coba buat, tetapi memancarkan sintaks yang tidak valid, yang menghasilkan kesalahan seperti:
my-minion-id:
- State 'system' in SLS 'network' is not formed as a list
Pada prinsipnya, seharusnya dimungkinkan untuk, entah bagaimana memeriksa output dari template Jinja sebelum mencoba mengurai output sebagai SLS
file. Ada modul Python untuk penyaji Jinja salt.renderers.jinja
, tetapi jika saya mencoba mengeksekusinya di CLI, saya mendapatkan kesalahan:
# 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
Bagaimana saya bisa melihat output dari template saya? Tampaknya tidak masuk akal seharusnya ini sulit untuk di-debug.
salt minion-id cp.cache_file salt://network/init.sls
dan kemudian menjalankan slsutil.renderer terhadap file yang diludahkan kembali setelah di-cache di antek, atau mulai pada 2018.3, Anda cukup menentukansalt://network/init.sls
Mengingat berapa banyak waktu yang saya habiskan berminggu-minggu yang lalu bergumul dengan masalah yang berkaitan erat, saya berharap saya bisa mengetahuinya lebih cepat.
Solusinya adalah menggunakan
salt.modules.cp.get_template
minion Garam untuk mengambil file, merendernya melalui mesin templating dan menempatkannya di tempat yang mudah dibaca:Dari sana, Anda terhubung ke
my-minion-id
host dan memeriksa file tempat Anda berada/root/network.sls
.Ini masuk akal;
salt.renderers.jinja
ada disalt.renderers
namespace, sementara modul Anda memiliki akses ke dari CLI berada disalt.modules
namespace.Ini juga masuk akal dari sudut pandang visibilitas data; rendering template terjadi pada antek , di mana butir dan semacamnya tersedia, dan saya belum melihat modul yang mengeksekusi kode antek mengembalikan output sewenang-wenang ke master (untuk tampilan pada CLI, misalnya); data yang dikembalikan selalu terstruktur dengan baik dan ringkas. (Mungkin ada modul seperti itu, tapi saya tidak tahu apa itu. Itu akan menjadi solusi yang lebih baik untuk menjatuhkan file uji ke antek.)
sunting: @ gtmanfred jawaban jauh lebih baik dan lebih langsung, dan saya telah menerimanya. Saya meninggalkan yang satu ini di sini untuk tujuan informatif. Ini bukan solusi terbaik, tetapi masih berfungsi.
sumber