使用 SaltStack Grains 访问环境变量
Access Environmental Variables with SaltStack Grains
我想知道如何使用 SaltStack Grains
正确访问 Environmental Variables
。
我一直在关注 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 ...
所以键在那里,但值不在。当我从 Python 命令行 运行 os.environ.get('T17_SECRET_KEY','')
时,值就在那里。
可能是什么原因造成的?
编辑
我已经改变了这个:
/srv/salt/_grains/env_vars.py
from salt.modules import environ
def env_vars():
return {'T17_SECRET_KEY': environ.get('T17_SECRET_KEY','')}
当我从 Python 命令行执行此函数时,它 returns Key:Value,但当 运行 宁 salt '*' saltutil.sync_grains
和 salt '*' grains.items
我看不到值,只能看到键。
我什至 运行 salt '*' state.highstate
重新加载所有内容。
这可能是由其他配置引起的吗?
os.environ
访问恰好执行代码的 (运行dom) Salt minion 的进程环境;如果要访问当前salt进程的环境,需要改用这个模块:salt.modules.environ
这样做的原因是 salt 可以 运行 您的代码在任何一台计算机上。他们每个人的环境可能会有所不同。因此,除非您可以确保您的代码在某个 minion 上 运行ning 并且该 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
我想知道如何使用 SaltStack Grains
正确访问 Environmental Variables
。
我一直在关注 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 ...
所以键在那里,但值不在。当我从 Python 命令行 运行 os.environ.get('T17_SECRET_KEY','')
时,值就在那里。
可能是什么原因造成的?
编辑
我已经改变了这个:
/srv/salt/_grains/env_vars.py
from salt.modules import environ
def env_vars():
return {'T17_SECRET_KEY': environ.get('T17_SECRET_KEY','')}
当我从 Python 命令行执行此函数时,它 returns Key:Value,但当 运行 宁 salt '*' saltutil.sync_grains
和 salt '*' grains.items
我看不到值,只能看到键。
我什至 运行 salt '*' state.highstate
重新加载所有内容。
这可能是由其他配置引起的吗?
os.environ
访问恰好执行代码的 (运行dom) Salt minion 的进程环境;如果要访问当前salt进程的环境,需要改用这个模块:salt.modules.environ
这样做的原因是 salt 可以 运行 您的代码在任何一台计算机上。他们每个人的环境可能会有所不同。因此,除非您可以确保您的代码在某个 minion 上 运行ning 并且该 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