Saltstack:我可以使用file.manage来源另一个盐状态创建的文件吗?

时间:2014-11-28 22:24:01

标签: salt-stack

noob saltstack问题

我有一个以salt状态(war文件)创建的文件,我希望在更改时将该文件复制到服务器的deploy目录。我在想file.managed是正确的方法,所以类似于:

/var/lib/tomcat7/webapps/app.war:
  file.managed:
    - source: /home/user/project/build/release/app.war
    - user: tomcat7
    - group: tomcat7

该文件是通过一个单独的状态构建的,该状态似乎正在正常运行。

当盐执行state.highstate时,输出为     "无法确定源文件的上游哈希值/home/user/project/build/release/app.war"

有更好的方法吗?在一个状态下构建文件(因此它是本地的),然后在构建的文件更改时更新目标? 谢谢你的任何建议。

1 个答案:

答案 0 :(得分:5)

您需要将其更改为file.copy,因为file.managed用于从salt主服务器或HTTP / FTP服务器获取文件。

/var/lib/tomcat7/webapps/app.war:
  file.copy:
    - source: /home/user/project/build/release/app.war
    - force: True
    - user: tomcat7
    - group: tomcat7
    - require:
      - cmd: the_build_state

至于将它链接到构建,你需要使用require,就像在上面的修改状态一样,它假定你的构建状态定义如下:

the_build_state:
  - cmd.run:
    ...