Python Salt执行模块无法读取支柱数据

Python Salt执行模块无法读取支柱数据,python,salt-stack,Python,Salt Stack,我对salt非常陌生,我有以下设置--仍在进行中: 支柱数据(包含用于指定应用程序环境的字典) 执行模块setup.py包含读取支柱的函数 在minion minion1上调用模块时,它工作正常 salt-call setup.set_up_minion1 --log-level=debug 在主机上调用模块时,它不起作用 salt 'minion1' setup.set_up_minion1 --log-level=debug 错误是 The minion function cause

我对salt非常陌生,我有以下设置--仍在进行中:

  • 支柱数据(包含用于指定应用程序环境的字典)
  • 执行模块setup.py包含读取支柱的函数
在minion minion1上调用模块时,它工作正常

salt-call setup.set_up_minion1 --log-level=debug
在主机上调用模块时,它不起作用

salt 'minion1' setup.set_up_minion1 --log-level=debug
错误是

The minion function caused an exception: Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/salt/minion.py", line 1071, in _thread_return
    return_data = func(*args, **kwargs)
  File "/var/cache/salt/minion/extmods/modules/setup.py", line 38, in set_up_minion1
    environment_definition = __pillar__["minion1"]
KeyError: 'minion1'
错误消息中提到的代码行是

  environment_definition = __pillar__["minion1"]
正如您在错误消息中所看到的,salt在支柱中找不到“minion1”键。我不知道发生了什么,为什么

我从服务器上测试了支柱的内容:

salt '*1*' pillar.items
返回

minion1.mydomain.nope:
----------
minion1:
    ----------
    app_server_definition:
        minion1_app
    db_server_definition:
        minion1_db
<snip>
返回

local:
----------
minion1:
    ----------
    app_server_definition:
        minion1_app
    db_server_definition:
        minion1_db
<snip>
本地:
----------
奴才1:
----------
应用程序\服务器\定义:
迷你1_应用程序
db_服务器_定义:
迷你1_db

有人能解释一下发生了什么,为什么我不能从服务器调用执行模块吗?谢谢。

您想编写执行模块的原因是什么?通常您要编写状态。大多数常见任务默认情况下都包含在salt中可用的状态中。您自己的执行模块只对非常特殊的东西是必需的。原因是我们有许多服务器用于不同的客户机,我不想仅仅因为存在错误而意外地破坏现有的配置仆从的盐命令中的“*”。另一个原因是支柱是以抽象的方式定义的,因此我可以非常灵活地配置环境,而无需重复用户名、组名、密码等值--这些值有时必须在另一端被自定义值覆盖--但因此要了解如何配置环境,我正在使用python解析支柱。其他一切都会非常乏味。你也可以通过国家和支柱来实现这一点。查看通常可通过支柱数据配置的。sls将状态(或公式)应用于您的仆从,highstate将为您执行其余操作。我们对这种设置很满意,在过去的一年里没有发生事故。这很奇怪。你的模块中有没有任何地方需要修改支柱?
local:
----------
minion1:
    ----------
    app_server_definition:
        minion1_app
    db_server_definition:
        minion1_db
<snip>