web-dev-qa-db-ja.com

必要なファイルがダウンロードされたら、どのようにcmd.scriptを実行しますか?

私は私が始めようとしている非常に単純なユースケースがあります:

マスターからいくつかのtar.gzソースパッケージをダウンロードしてインストールし、スクリプトを実行してすべてをコンパイルしてインストールする必要があります。

これはおそらく基本的な質問だと思いますが、どんなポインタでも大歓迎です。

/usr/local/src/source1.tar.gz:
  file.managed:
    - source: salt://sources/source1.tar.gz
    - user: root
    - group: root
    - mode: 644

/usr/local/src/source2.tar.gz:
  file.managed:
    - source: salt://sources/source2.tar.gz
    - user: root
    - group: root
    - mode: 644

/usr/local/src/source3.tar.gz:
  file.managed:
    - source: salt://sources/source3.tar.gz
    - user: root
    - group: root
    - mode: 644

//I need something like this, but am not sure how to do it
compile_and_install:
  - require: /usr/local/src/source1.tar.gz
  - require: /usr/local/src/source2.tar.gz
  - require: /usr/local/src/source3.tar.gz
  cmd.script:
    - source: salt://scripts/compile_and_install.sh
    - user: root
    - group: root
    - Shell: /bin/bash
5
Carl

それが将来誰かを助ける場合に備えて、それを理解しました:

/usr/local/src/source1.tar.gz:
  file.managed:
    - source: salt://sources/source1.tar.gz
    - user: root
    - group: root
    - mode: 644

/usr/local/src/source2.tar.gz:
  file.managed:
    - source: salt://sources/source2.tar.gz
    - user: root
    - group: root
    - mode: 644

/usr/local/src/source3.tar.gz:
  file.managed:
    - source: salt://sources/source3.tar.gz
    - user: root
    - group: root
    - mode: 644

compile_and_install:
  cmd.script:
    - require:
      - file: /usr/local/src/source1.tar.gz
      - file: /usr/local/src/source2.tar.gz
      - file: /usr/local/src/source3.tar.gz
    - source: salt://scripts/compile_and_install.sh
    - user: root
    - group: root
    - Shell: /bin/bash
6
Carl

最近のバージョンのsaltでは、デフォルトで状態自動順序付けが有効になっているため、この問題の多くが解消されています。 http://docs.saltstack.com/ref/states/ordering.html#state-auto-ordering

そうは言っても、あなたの解決策は要件を明示的に述べるより良いものです。

1
Dan Garthwaite