2016-04-18 16 views
5

Creo un utente foo su un seguace. Il seguace valuta lo /etc/default/useradd. Ciò significa che il salt master non sa se il nuovo $ HOME sarà /home/foo o nel nostro caso /localhome/foo.

Come posso ottenere $ HOME dell'utente foo come variabile jinia?

Ne ho bisogno in un file di servizio systemd.

Vorrei evitare i dati del pilastro personalizzato, poiché questo è ridondante. C'è un modo per farlo via i cereali?

Funziona durante il boostrapping? In primo luogo l'utente foo deve essere creato, quindi il file systemd può essere creato, cercando la $ HOME di foo ...

Questo potrebbe funzionare se l'utente esiste già:

{{ salt['user.info'](user).get('home') }}/foo: 
    file.recurse: 
    - source: salt://conf/common/foo 

problema correlati : https://github.com/saltstack/salt/issues/7883

risposta

3

rispondere a questa domanda:

c'è un modo per ottenere via cereali?

1) aggiungere il file '_grains/homeprefix.py' sotto la file_roots specificato dal file di configurazione master, il cui contenuto è:

#!/usr/bin/env python 
from os.path import dirname, expanduser 

def gethomeprefix(): 
    # initialize a grains dictionary 
    grains = {} 
    # Some code for logic that sets grains like 
    grains['homeprefix'] = dirname(expanduser("~")) 
    return grains 

2) gestita cmd sincronizzazione sul master per sincronizzare i grani informazioni al minion:

salt '*' saltutil.sync_grains 

3) eseguito grains.get sul master di prova:

salt '*' grains.get homeprefix