2017-02-09 64 views
2

这是更多的澄清请求。盐堆:在执行配方前需要安装软件包

我有两个公式,它们在运行之前依靠init.sls公式安装的一堆软件包。

此刻我有类似下面的东西。我想知道是否有人能证实这是正确的方法,或者是否有人确实可以提供更好的方法。

init.sls

install_packages: 
    pkg.installed: 
    - pkgs: 
     - foo 
     - bar 
    - require_in: 
     - sls: brrap 
     - sls: blah 

所以会这样确保执行brrap.sls和blah.sls之前,上面的软件包安装?

感谢

+0

从我的角度看起来不错。 – dahrens

回答

3

是,使用require_in必要在你的例子将确保执行brrap.slsblah.sls之前安装了软件包。

所有的_in必要条件都以相同的方式工作:它们在目标状态下产生正常的必要条件。当在单独的sls文件中分配require时,require_in声明特别有用。

只要brrap.slsblah.sls状态并不需要知道需要它时,它被设置了附加组件(foobar),你的配置是好的。如果brrap.slsblah.sls状态确实需要foobar软件包安装在所有的情况下,这可能是一个更简单的解决方案,以创建从brrap.slsblah.sls状态的require必要。

就拿下面的状态http.sls

httpd: 
    pkg.installed: 
    - name: httpd 
    service.running: 
    - name: httpd 

在一些你的爪牙,你可能想使用http.sls,而在其他你可能想使用http.slsphp.sls状态:

include: 
    - http 

php: 
    pkg.installed: 
    - name: php 
    - require_in: 
     - service: httpd 

现在,如果PHP是验证安装在httpd服务器才会开始。

查看完整示例的requisites and other global state arguments文档。

+0

谢谢你这么彻底的澄清 –

+1

注意整个sls文件中的require_in是[破解到氮气](https://github.com/saltstack/salt/issues/22852)发布。 –