2016-04-18 28 views
5

Ich erstelle einen Benutzer foo auf einem Diener. Der Minion bewertet /etc/default/useradd. Das bedeutet, dass der Salzmaster nicht weiß, ob das neue $ HOME /home/foo oder in unserem Fall /localhome/foo sein wird.

Wie kann ich die $ HOME des Benutzers foo als jinia Variable bekommen?

Ich brauche es in einer System-Service-Datei.

Ich möchte benutzerdefinierte Säulen Daten vermeiden, da dies redundant ist. Gibt es eine Möglichkeit, es über Getreide zu bekommen?

Funktioniert es während des Boostrappings? Zunächst wird der Benutzer foo erstellt werden muss, dann ist die systemd-Datei kann durch Aufsuchen des $ HOME von foo erstellt werden ...

Dies würde funktionieren, wenn der Benutzer gibt es bereits:

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

verwandtes Thema : https://github.com/saltstack/salt/issues/7883

Antwort

3

Beantworten sie diese Frage:

gibt es eine Möglichkeit, es über Körner zu bekommen?

1) fügen Datei '_grains/homeprefix.py' unter der file_roots durch die Master-Konfigurationsdatei spezifiziert ist, wobei der Inhalt davon ist:

#!/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) sync cmd auf Master laufen Körner zu synchronisieren Informationen zu Günstling:

salt '*' saltutil.sync_grains 

3) laufen grains.get auf Master-Test:

salt '*' grains.get homeprefix