2 Stimmen

Wie rufe ich archive.tar in Salt auf?

Ich versuche, eine Datei in einer Salt-Statusdatei zu entpacken. Dies ist der relevante Status:

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

Aber ich erhalte immer den folgenden Fehler:

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

Irgendwelche Ideen, was ich falsch mache? Ich bin mir ziemlich sicher, dass es kein Versionsproblem ist.

11voto

jbub Punkte 2586

Das Hauptproblem hier ist, dass es keinen archive.tar-Zustand gibt. Der Grund dafür ist wahrscheinlich ein Missverständnis der sogenannten Module und Zustände. Das archive ist ein Modul mit einigen Funktionen, die Sie über die Befehlszeile aufrufen können, wie z.B.:

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

Jetzt gibt es tatsächlich einen Weg, das Modul aus Ihren Zuständen heraus zu verwenden. Es gibt einen module.run-Zustand, der genau das ermöglicht. Ich habe ein schnelles Beispiel mit dem archive.tar-Aufruf gemacht:

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

Der -name-Parameter gibt an, welches Modul und welche Funktion ausgeführt werden sollen, die anderen Parameter werden an die tatsächliche Funktion übergeben.

Sie können hier zusätzliche Parameter finden, die an die Tar-Funktion übergeben werden: http://docs.saltstack.com/ref/modules/all/salt.modules.archive.html#salt.modules.archive.tar

0voto

Markizano Punkte 81

Eigentlich: Der states.archive fehlt komplett in den 0.17.x Tarballs!

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

Aktualisieren Sie auf die neueste Version, um Zugriff auf archive.extracted in Ihren States zu haben.
Als Hotfix können Sie den develop-Zweig des Github in

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

Starten Sie saltmaster/saltminion nach einem Update wie diesem neu.

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

0voto

Dave Neeley Punkte 3248

Wenn Sie diese Nachricht sehen und mit einem Windows-Minion arbeiten und die Version, die Sie verwenden, älter als 2015.2 ist, sagt sie die Wahrheit. Es ist nicht verfügbar. Siehe https://github.com/saltstack/salt/issues/12992.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X