我在github上阅读了关于vim-formula的状态文件 - > Here
有一个名为salt.sls的文件:
{% from "vim/map.jinja" import vim with context %}
include:
- vim
sakt_vimfiles:
file.recurse:
- name: {{ vim.share_dir }}
- source: salt://vim/files/salt
但我无法在当前目录中找到vim.sls
中包含的salt.sls
。我在saltstack的网站上学习了guidbook,我知道include
这个词意味着重用状态文件,对吗?
所以我认为它必须与jinja2 {% from "vim/map.jinja" import vim with context %}
和map.jinja:
{% set vim = salt['grains.filter_by']({
'Arch': {
'pkg': 'vim',
'share_dir': '/usr/share/vim/vimfiles',
'group': 'root',
'config_root': '/etc',
},
'Debian': {
'pkg': 'vim',
'share_dir': '/usr/share/vim/vimfiles',
'group': 'root',
'config_root': '/etc/vim',
},
'RedHat': {
'pkg': 'vim-enhanced',
'share_dir': '/usr/share/vim/vimfiles',
'group': 'root',
'config_root': '/etc',
},
'Suse': {
'pkg': 'vim',
'share_dir': '/usr/share/vim/site',
'group': 'root',
'config_root': '/etc',
},
'FreeBSD': {
'pkg': 'vim',
'share_dir': '/usr/local/share/vim/vimfiles',
'group': 'wheel',
'config_root': '/etc',
},
}, merge=salt['pillar.get']('vim:lookup')) %}
答案 0 :(得分:0)
我必须同意,阅读Jinja是疯了。如果你是盐文件结构的新手,它甚至是最糟糕的。所有关于穷人都强调文档中的基本内容会引起混淆。实际上,您需要了解许多基本的saltstack设置结构以避免混淆。
现在回答。
想象一下,您将整个公式文件夹复制到salt-states文件夹,比如说(盐主配置/etc/salt/master
)files_root
:/srv/salt/states
实际上,公式ASSUME复制文件根目录下的github公式source / vim文件夹。因此,你应该有类似/srv/salt/states/vim
的东西。
现在来看看有趣的部分:files_roots是/srv/salt/states
,因此对于salt-master文件系统,从文件夹开始的任何内容都会被视为salt://
。由于您的vim文件夹位于其下,因此它将引用为salt://vim
。
现在回到salt.sls
中的/srv/salt/states/vim
,找到include : - vim
Saltstatck Get started 对初学者来说要好得多。只需重复本教程一段时间,它将有助于解决大部分困惑。
(更多) 再一个基本的:盐栈如何遍历文件夹。这也解释了include如何找到正确的文件。 如果你有类似的东西
base:
myserver:
- app
- db.myserver
因此,对于第一个app
,有两种方法可以编写状态
第一种方式:将状态置于app.sls
第二种方式:创建文件夹调用app
,然后将状态置于app/init.sls
第一种方式很简单。如果你没有读基本的话,第二种方式有点“神奇”。实际上,init.sls
是状态文件。您可以在.sls
文件夹中放置许多app
。但盐不关心其他,除非你明确地称它们,即如例子db.server
# This is the first way, direct reference to the sls file
+--app.sls
+--/db
+--myserver.sls
# Second way, using init.sls as anchor inside folder.
+--/app
+-- init.sls
+--/db
+--/myserver
+--init.sls
所以来到第二路db.server
现在看起来很简单,salt master只需遍历salt://db/
文件夹,查找server.sls
。
但是,与第一种方式混合,您应该知道,您可以将状态文件写入/db/server/init.sls
,这就是salt查找文件的方式。
现在,回到你的vim公式文件夹,只需阅读/vim/init.sls
。现在您了解include: vim
平均值遍历salt://vim/init.sls
或salt://vim.sls
。
你可能会问,如果混合两种结构怎么办?我的建议:不要这样做。你会混淆自己和那些维护你的盐堆的人。