0

我想运行一个命令 ( cmd.run),它使用 salt 目录中的文件,例如:

fly_set_{{ pipeline }}:
  cmd.run:
    - name: |
        fly -t ci set-pipeline -p {{ pipeline }} -c pipeline.yml -l credentials.yml
    - require:
      - cmd: fly_login_{{name}}
        - file: /etc/concourse/teams/builds/{{ pipeline }}/pipeline.yml
        - file: /etc/concourse/teams/builds/{{ pipeline }}/credentials.yml

这是正确的方法还是我需要先这样做?

file:
  managed:
    - source: salt://concourse/teams/builds/{{ pipeline }}/pipeline.yml
4

1 回答 1

3

我不确定您到底想实现什么,但如果您的命令依赖于多个文件,那么正确的方法是:

/etc/concourse/teams/builds/{{ pipeline }}/pipeline.yml:
  file.managed:
    - source: salt://concourse/teams/builds/{{ pipeline }}/pipeline.yml

/etc/concourse/teams/builds/{{ pipeline }}/credentials.yml:
  file.managed:
    - source: salt://concourse/teams/builds/{{ pipeline }}/credentials.yml

fly_set_{{ pipeline }}:
  cmd.run:
    - name: |
        fly -t ci set-pipeline -p {{ pipeline }} -c pipeline.yml -l credentials.yml
    - require:
      - file: /etc/concourse/teams/builds/{{ pipeline }}/pipeline.yml
      - file: /etc/concourse/teams/builds/{{ pipeline }}/credentials.yml

前两个file.managed指令将确保两个文件都存在于 minion 上。requirein 指令将cmd.run确保在执行命令之前文件存在于 minion 上。

于 2017-03-15T11:23:59.880 回答