我正在学习有关盐的知识。
我理解事情的工作方式,状态文件必须放在 master/minion 配置中静态指定的根目录下。
所以我的问题是,有没有办法在文件系统上执行任意 sls 文件,即不在配置的文件根目录下执行?
这样做的目的是,我希望我的项目包含 sls 文件,描述它们将部署到的系统所需的状态,理想情况下,我不希望将这些文件复制/符号链接到 salt 文件根目录中。
谢谢!
答案1
不,salt 查找状态文件file_roots
。您可以通过赋予它一个以点分隔的名称来告诉它要执行哪个 sls,例如默认情况下哪个 salt 将在或salt '*' state.apply my.state
中查找。/srv/salt/my/state.sls
/srv/salt/my/state/init.sls
该文件需要存在于 salt master 上(除非你正在使用 minion无主模式)。
答案2
事实证明我可以通过几种方式做我想做的事情:1.使用state.template
函数中,我可以指定要执行的 sls 模板文件的路径 2. 在无主模式下,使用salt-call
与--file-root
和--pillar-root
参数,我可以将文件根和支柱根设置为任何目录(但它必须遵循文件/支柱根目录结构,并有一个top.sls文件,除非我使用state.sls
)。