2014-11-21 81 views
2

我想知道在/ etc/salt/master中声明环境的效用是什么?了解盐环境

实施例:

file_roots: 
    base: 
    - /srv/salt 
    env1: 
    - /srv/salt/env1 

这是/ SRV /盐树:

. 
├── base 
├── env1 
│   └── domain1 
│    ├── init.sls 
│    └── nginx.conf 
└── top.sls 

而top.sls:

env1: 
    '*': 
    - env1.domain1 

这里面的ENV1 init.sls/domain1/

/etc/nginx/nginx.conf: 
    file.managed: 
     - source: salt://env1/domain1/nginx.conf 

当执行:

salt '*' state.sls env1.domain1 

一切工作正常。

但随着highstate:

# salt '*' state.highstate 
myHost: 
    Data failed to compile: 
---------- 
    No matching sls found for 'env1.domain1' in env 'env1' 

鉴于环境 “ENV1” 在主config.I声明改变了我的配置,我已经把:的

- source: salt://domain1/nginx.conf 

代替:

- source: salt://env1/domain1/nginx.conf 

我有这个错误:

Comment: Source file salt://domain1/nginx.conf not found 

是否有配置错误的地方? 什么是宣布在主人的conf环境的效用, 如果我们不能把它直接使用salt://subfolder,而不是直接salt://environment/subfolder

我无法找到有关创建环境和使用它们的好文档!

===编辑===

这是新的配置:

主:

file_roots: 
    base: 
    - /srv/salt/base 
    env1: 
    - /srv/salt/env1 

的/ SRV /盐树

. 
├── base 
│   └── init.sls 
├── conf_template 
├── env1 
│   └── domain1 
│    ├── init.sls 
│    └── nginx.conf 
└── top.sls 

top.sls:

base: 
    '*': 
    - init 
env1: 
    '*': 
    - domain1 

而ENV1 /域1 /初始化。SLS:

/etc/nginx/nginx.conf: 
    file.managed: 
     - source: salt://domain1/nginx.conf 

和执行结果:

salt '*' state.sls env1.domain1 
myHost: 
    Data failed to compile: 
---------- 
    No matching sls found for 'env1.domain1' in env 'base' 
+0

这个github问题(评论对话框)帮助我解决了这个问题:https://github.com/saltstack/salt/issues/10447 – 2015-11-05 21:08:03

回答

0

中发现 'env1.domain1' 无匹配的SLS ENV 'ENV1'

我相信这是因为州参考不应该包括环境,即你有一个额外的env1,它应该是:

env1: 
    '*': 
    - domain1 

你有对方误以为是你有env1作为base它可以使事情真的令人困惑,因为这不是环境应该如何来构造一个子directoy。

这些是我能够发现的唯一两个错误,修复之后,highstate应该和salt://domain1/nginx.conf(这是正确的)相关。

最后,我相信环境确实令人困惑,对我而言,我发现我可以更好地理解它们,重点关注它们是如何实际执行的:多状态树。从技术上讲,“环境”的概念不存在。这只是我们使用该功能的一个。

+0

谢谢。我做了你所推荐的。你可以看看更新吗? – 4m1nh4j1 2014-11-24 10:53:41