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

Bee*_*eel 1 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Amr*_*afa 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
Run Code Online (Sandbox Code Playgroud)

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

the_build_state:
  - cmd.run:
    ...
Run Code Online (Sandbox Code Playgroud)