Saltstack负责更新Web应用程序代码(uwsgi,Python,如果重要的话)。我们的想法是从存档更新代码。最好使用单个salt命令 - state.highstate
。
问题是,在更新期间,应用程序代码不应该运行,因此service.stop
和service.start
围绕state.highstate
运行。
有没有办法将此更新逻辑包含在highstate中?或者也许还有一些其他命令,哪个更合适?
答案 0 :(得分:0)
在约翰霍尔的Mastering SaltStack,第2版中找到以下内容。
...,考虑一个使用Apache的Web应用程序。什么时候 生产服务器上的代码库发生了变化,应该转向Apache 关闭,以避免错误与尚未完成的代码 正在安装。
关键是使用prereq
,这是适用于我的存档案例的书籍示例:
my_service:
service:
- running
- name: my_service
- watch:
- cmd: my_archive
my_archive:
cmd:
- run
- name: "/bin/tar -zxf my.tar.gz -C {{ code_dir }}"
- require:
- file: my.tar.gz
...
shutdown_my_service:
service:
- dead
- name: my_service
- prereq:
- cmd: my_archive
(我没有像这里写的那样检查它,但很容易看到这个想法)