State' pkg.upgrade'在SLS' apt-upgrade'中找到不可用

时间:2015-01-13 18:30:40

标签: salt-stack

我正在尝试构建一个可以在Ubuntu系统上执行apt-get upgrade调用的SLS文件。我在无主模式下运行。

直接从命令行调用它:

$ salt-call --local pkg.upgrade
[INFO    ] Executing command 'apt-get -q update' in directory '/root'
[INFO    ] Executing command "dpkg-query --showformat='${Status} ${Package} ${Version} ${Architecture}\n' -W" in directory '/root'
[INFO    ] Executing command ['apt-get', '-q', '-y', '-o', 'DPkg::Options::=--force-confold', '-o', 'DPkg::Options::=--force-confdef', 'dist-upgrade'] in directory '/root'
[INFO    ] Executing command "dpkg-query --showformat='${Status} ${Package} ${Version} ${Architecture}\n' -W" in directory '/root'

但是,从SLS文件(YAML格式)进行的同一调用不起作用:

# top.sls
base:
  '*':
    - apt-upgrade


# apt-upgrade.sls
apt-upgrade:
  pkg:
    - upgrade


$ salt-call --local state.highstate
# ...
          ID: apt-upgrade
    Function: pkg.upgrade
      Result: False
     Comment: State 'pkg.upgrade' found in SLS 'apt-upgrade' is unavailable
     Started:
    Duration:
     Changes:

1 个答案:

答案 0 :(得分:1)

您遇到的问题是您没有理解execution modulesstate modules之间的区别。

pkg.upgrade存在于salt.modules.aptpkg执行模块中。因此,您可以从salt-call命令调用它。但是,要从状态文件中使用它,您必须使用module.run状态。

或者更好的是,您可以看到salt.states.pkg中是否找到了有用的内容并改为使用它。