了解盐环境

时间:2014-11-21 17:00:45

标签: salt-stack

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

示例:

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

这是/ srv / salt树:

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

top.sls:

env1:
  '*':
    - env1.domain1

这是env1 / domain1 /

中的init.sls
/etc/nginx/nginx.conf:
  file.managed:
      - source: salt://env1/domain1/nginx.conf 

执行时:

salt '*' state.sls env1.domain1

一切正常。

但是有了高州:

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

鉴于环境" env1"在主配置中声明。我改变了我的配置,我已经把:

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

而不是:

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

我遇到了这个错误:

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

某处有错配吗? 在master conf中声明环境有什么用处, 如果我们无法直接使用salt://subfolder而不是salt://environment/subfolder直接调用它?

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

===编辑===

这是新配置:

主人:

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

/ srv / salt树

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

top.sls:

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

和env1 / domain1 / init.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'

1 个答案:

答案 0 :(得分:0)

  

找不到与env1.domain1'相匹配的单词在env' env1'

我相信这是因为状态引用不应该包含环境,即你有一个额外的env1,它应该是:

env1:
  '*':
    - domain1

你遇到的另一个错误是你env1作为base的子指南,这可能会使事情变得混乱,因为这不是环境应该如何构建的。

这是我能发现的唯一两个错误,在修复它们之后,highstate应该与salt://domain1/nginx.conf的引用一样好(这是正确的)。

最后,我认为环境确实令人困惑,对我而言,我发现通过关注它们的实际实现方式我可以更好地理解它们:多个状态树。从技术上讲,"环境的概念"不存在。它只是我们利用该功能的一部分。