2015-01-13 13 views
2

我試圖構建一個SLS文件,該文件將在Ubuntu系統上執行apt-get upgrade調用。我在無主模式下運行。在SLS'apt-upgrade'中找到的狀態'pkg.upgrade'不可用

直接從命令行調用它的工作原理:

$ 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

的問題,你」重要的是你沒有理解execution modulesstate modules之間的差異。

salt.modules.aptpkg執行模塊中存在pkg.upgrade。因此,您可以從salt-call命令中調用它。但是,要從狀態文件使用它,您必須使用module.run狀態。

或者更好的是,你可以看看你是否在salt.states.pkg中發現了一些有用的東西,並用它代替。