gpt4 book ai didi

python - 使用 SaltStack Grains 访问环境变量

转载 作者:行者123 更新时间:2023-12-01 04:45:02 24 4
gpt4 key购买 nike

我想知道如何正确访问Environmental VariablesSaltStack Grains

我一直关注documentation但一直无法让它发挥作用。这是我的代码:

/srv/salt/_grains/env_vars.py

import os

def env_vars():
return {'T17_SECRET_KEY': os.environ.get('T17_SECRET_KEY','')}

然后我运行 salt '*' saltutil.sync_grains

我得到了这样的回复:

salt:
- grains.env_vars

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

salt:
----------
SSDs:
T17_SECRET_KEY:
# other vars ...

所以键在那里,但值不在那里。当我运行os.environ.get('T17_SECRET_KEY','')时从 Python 命令行,该值就在那里。

这可能是什么原因造成的?

编辑

我已经改变了这一点:

/srv/salt/_grains/env_vars.py

from salt.modules import environ

def env_vars():
return {'T17_SECRET_KEY': environ.get('T17_SECRET_KEY','')}

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

我什至跑了salt '*' state.highstate重新加载所有内容。

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

最佳答案

os.environ 访问恰好执行您的代码的(随机)Salt minion 的进程环境;如果你想访问当前salt进程的环境,则需要使用这个模块:salt.modules.environ

原因是 salt 可以在任意数量的计算机上运行您的代码。他们每个人所处的环境可能会有所不同。因此,除非您可以确保您的代码在某个 Minion 上运行并且该 Minion 上的环境正确,否则您的代码将无法工作。

模块salt.modules.environ使您可以访问当您提交命令时salt构建的虚拟进程环境。

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

/srv/salt/_grains/env_vars.py

from salt.modules import environ

def env_vars():
return {'T17_SECRET_KEY': environ.get('T17_SECRET_KEY','')}

/srv/salt/environ/init.sls

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

关于python - 使用 SaltStack Grains 访问环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29652944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com