SaltStack:尚不存在的用户的 $HOME

SaltStack: $HOME of users which does not exist yet

我在 minion 上创建了一个用户 foo。小兵评估 /etc/default/useradd。这意味着 salt master 不知道新的 $HOME 是 /home/foo 还是在我们的例子中是 /localhome/foo.

如何获取用户 foo 的 $HOME 作为 jinia 变量?

我需要它在 systemd 服务文件中。

我想避免自定义支柱数据,因为这是多余的。有没有办法通过谷物获得它?

它在 boostrapping 期间有效吗?首先需要创建用户 foo,然后可以通过查找 foo 的 $HOME...

创建 systemd 文件

如果用户已经存在,这将有效:

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

相关问题:https://github.com/saltstack/salt/issues/7883

回答这个问题:

Is there a way to get it via grains?

1) 在主配置文件指定的file_roots下添加文件'_grains/homeprefix.py',内容为:

#!/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) 运行 在 master 上同步 cmd 以将 grains 信息同步到 minion :

salt '*' saltutil.sync_grains

3) 运行 grains.get 测试大师:

salt '*' grains.get homeprefix