2

我正在尝试解压缩盐状态文件中的文件。这是相关的状态:

install-file:
#unpack
  archive.tar:
    - options: xjf
    - tarfile: /opt/path/to/file.tar.bz
    - dest: /opt/path/to/
    - watch:
      - file: /opt/path/to/file.tar.bz
#get files
  file.managed:
    - source: salt://pkgs/path/to/file.tar.bz
    - name: /opt/path/to/file.tar.bz

但我不断收到以下错误:

    State: - archive
    Name:      install-sdk
    Function:  tar
        Result:    False
        Comment:   State archive.tar found in sls pkgs.android is unavailable

知道我做错了什么吗?我很确定这不是版本问题。

4

3 回答 3

11

这里的主要问题是没有archive.tar状态。其原因可能是对所谓的模块和状态的误解。archiveis 模块具有一些您可以从 cli 调用的功能,例如:

salt '*' archive.tar cjvf /tmp/tarfile.tar.bz2 /tmp/file_1,/tmp/file_2

现在有一种方法可以实际使用您所在州的模块。有一个module.run国家可以做到这一点。我用这个archive.tar电话做了一个简单的例子:

untar_file:
  module.run:
    - name: archive.tar
    - options: xjf
    - tarfile: /opt/path/to/file.tar.bz 
    - dest: /opt/path/to/

-name 参数指定运行哪个模块和函数,其他参数传递给实际函数。

您可以在此处找到传递给 tar 函数的其他参数:http: //docs.saltstack.com/ref/modules/all/salt.modules.archive.html#salt.modules.archive.tar

于 2013-11-18T19:37:34.420 回答
0

实际上:states.archive 从 0.17.x 压缩包中完全消失了!

markizano@localhost:/tmp/salt$for tar in *; do tar --list -f $tar; done|sort|grep archive.py
salt-0.16.0/salt/modules/archive.py
salt-0.17.0/salt/modules/archive.py
salt-0.17.1/salt/modules/archive.py
salt-0.17.2/salt/modules/archive.py
salt-0.17.3/salt/modules/archive.py
salt-0.17.4/salt/modules/archive.py
salt-0.17.5/salt/modules/archive.py
salt-2014.1.0/salt/modules/archive.py
salt-2014.1.0/salt/states/archive.py

升级到最新版本以访问您所在州的 archive.extracted。
作为修补程序,您可以将 github 的开发分支复制到

{{ salt['grains.get']('saltpath') }}/states/archive.py

像这样更新后重新启动 saltmaster/saltminion。

SaltDocs:http ://docs.saltstack.com/ref/states/all/salt.states.archive.html

于 2014-03-18T01:02:33.047 回答
0

如果您看到此消息,并且您正在使用 Windows Minion,并且您使用的版本早于 2015.2,那么它说的是实话。它不可用。请参阅https://github.com/saltstack/salt/issues/12992

于 2015-05-11T21:24:25.020 回答