我想知道在/ 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'
答案 0 :(得分:0)
找不到与env1.domain1'相匹配的单词在env' env1'
我相信这是因为状态引用不应该包含环境,即你有一个额外的env1
,它应该是:
env1:
'*':
- domain1
你遇到的另一个错误是你env1
作为base
的子指南,这可能会使事情变得混乱,因为这不是环境应该如何构建的。
这是我能发现的唯一两个错误,在修复它们之后,highstate应该与salt://domain1/nginx.conf
的引用一样好(这是正确的)。
最后,我认为环境确实令人困惑,对我而言,我发现通过关注它们的实际实现方式我可以更好地理解它们:多个状态树。从技术上讲,"环境的概念"不存在。它只是我们利用该功能的一部分。