我正在尝试构建一个可以在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:
答案 0 :(得分:1)
您遇到的问题是您没有理解execution modules和state modules之间的区别。
pkg.upgrade存在于salt.modules.aptpkg执行模块中。因此,您可以从salt-call
命令调用它。但是,要从状态文件中使用它,您必须使用module.run状态。
或者更好的是,您可以看到salt.states.pkg中是否找到了有用的内容并改为使用它。