Python 使用盐堆颗粒访问环境变量

Python 使用盐堆颗粒访问环境变量,python,salt-stack,Python,Salt Stack,我想知道如何使用盐堆颗粒正确访问环境变量 我一直在跟踪,但一直无法使其工作。以下是我的代码: /srv/盐/谷物/环境变量py 然后运行salt'*'saltutil.sync\u grains 我得到的回答是: salt: - grains.env_vars 但是当我运行salt'*'grains.items时,它显示: salt: ---------- SSDs: T17_SECRET_KEY: # other vars ... 因此,键在那里,但

我想知道如何使用盐堆颗粒正确访问环境变量

我一直在跟踪,但一直无法使其工作。以下是我的代码:

/srv/盐/谷物/环境变量py

然后运行
salt'*'saltutil.sync\u grains

我得到的回答是:

salt:
    - grains.env_vars
但是当我运行
salt'*'grains.items时,它显示:

salt:
    ----------
    SSDs:
    T17_SECRET_KEY:
    # other vars ...
因此,键在那里,但值不在那里。当我从Python命令行运行
os.environ.get('T17\u SECRET\u KEY','')
时,值就在那里

这可能是什么原因造成的

编辑

我改变了这一点:

/srv/盐/谷物/环境变量py

当我从Python命令行执行此函数时,它返回Key:Value,但仍然在运行
salt'*'saltutil.sync_grains
salt'*'grains.items时返回。我看不到值,只有Key

我甚至运行了
salt'*'state.highstate
来重新加载所有内容


这可能是由其他配置引起的吗

os.environ
访问碰巧执行代码的(随机)Salt minion的进程环境;如果要访问当前salt进程的环境,则需要改用此模块:

原因是salt可以在许多计算机上运行您的代码。他们每个人的环境可能都不一样。因此,除非您能够确保您的代码在某个仆从上运行,并且该仆从上的环境是正确的,否则您的代码将无法工作

模块
salt.modules.environ
允许您在提交命令时访问salt构建的虚拟进程环境

要正确访问
salt.modules.environ
,请通过添加以下文件使用
salt.states.environ

/srv/盐/谷物/环境变量py

/srv/salt/environ/init.sls

要进行验证,可以运行以下代码:

salt '*' grains.get T17_SECRET_KEY

@Aaron_Digulla你能看到我上面的编辑吗?我更改了函数,但仍然无法访问环境变量的值。谢谢。您如何设置
T17\u密钥
以及在哪里设置?当您执行echo$T17\u SECRET\u KEY
时,您看到正确的值了吗?@Aaron\u Digulla我在您的答案中添加了我的工作解决方案。谢谢你在这方面的帮助。我不知道salt.modules.environ,也不知道该如何使用它。谢谢
from salt.modules import environ

def env_vars():
    return {'T17_SECRET_KEY': environ.get('T17_SECRET_KEY','')}
from salt.modules import environ

def env_vars():
    return {'T17_SECRET_KEY': environ.get('T17_SECRET_KEY','')}
T17_SECRET_KEY:
    environ.setenv:
        - name: T17_SECRET_KEY
        - value: <secret_key_value_here>
        - update_minion: True
salt '*' state.sls environ

salt '*' saltutil.sync_grains
salt '*' grains.get T17_SECRET_KEY