2016-04-12 15 views
0

Minion ana makinesinin, myconf.yaml adlı bir varsayılan yaml yapılandırmasına sahip olduğunu varsayalım. Yapmak istediğim, bu yaml girişlerinin parçalarını bir sütundan gelen değerleri kullanarak düzenlemek. Bunu Tuz üzerine nasıl yapacağını düşünemiyorum bile. Düşünebildiğim tek şey, cmd.run aracılığıyla sunucuya özel bir python betiği çalıştırmak ve argümanlarla girdi ile beslemektir, ancak bu aşırı karmaşık görünmektedir.SaltStack: salt sütunu temel alan minion ana makinesinde yaml dosyasını düzenleme

file.managed'dan kaçınmak istiyorum. Şablon kullanamıyorum, çünkü .yaml dosya büyük ve harici yollarla değişebilir. Sadece birkaç parametreyi düzenlemek istiyorum. Bir python betiğinin yapabileceğini varsayalım ama tuz yazmadan yazabilirim diye düşündüm s/w

merge_if_exists seçeneği ile salt.states.file.serialize buldum, bunu deneyeceğim ve rapor edeceğim.

+0

belki de bu sorudan daha iyi anlaşılabilir (http://stackoverflow.com/questions/36509636/including-grain-data-when-querying-pillar-in-saltstack-managed-file) ve Cevap –

cevap

0

Bu, hem json hem de yaml için file.serialize ile yapılabilir. Girdi devlet üzerinde satır içi olabilir veya bir sütuntan gelebilir. Kısa bir alıntı aşağıdaki gibidir:

durumu:

cassandra_yaml: 
    file: 
    - serialize 
# - dataset: 
#  concurrent_reads: 8 
    - dataset_pillar: cassandra_yaml 
    - name: /etc/cassandra/conf/cassandra.yaml 
    - formatter: yaml 
    - merge_if_exists: True 
    - require: 
     - pkg: cassandra-pkgs 

ayağı:

cassandra_yaml: 
    concurrent_reads: "8" 
0

Sen merge_if_exists seçeneğiyle file.serialize istiyorum.

# /etc/my_app.yaml 
creds: 
    user: a 
    pass: b 
options: 
    opt1: 1 
    opt2: 2 
    opt3: 3 
    opt4: 4 

Ve devlet uygulandıktan sonra şu şekilde görünecektir: Hedefte

# states/my_app.sls 
something_conf_file: 
    file.serialize: 
    - name:   /etc/my_app.yaml 
    - dataset_pillar: my_app:mergeconf 
    - formatter:  yaml 
    - merge_if_exists: true 

# pillar/my_app.sls 
my_app: 
    mergeconf: 
    options: 
     opt3: 100 
     opt4: 200 

, /etc/my_app.yaml (devlet uygulanmadan önce) bu şekilde dışarı başlayabilir

creds: 
    user: a 
    pass: b 
options: 
    opt1: 1 
    opt2: 2 
    opt3: 100 
    opt4: 200 

Bunu söyleyebileceğim kadarıyla, sütun birleştirmeleriyle aynı algoritmayı kullandığını söyleyebilirim. Sözlükleri birleştirebilir ya da kısmen üzerine yazabilirsiniz; listeler sadece tamamen değiştirilebilir.

İlgili konular