我在独立的minion模式中使用salt,即只有一个没有master的实例。 System.out.println(gson.toJson(mp, MethodParameter.class));
文件夹包含/srv/secrets/
文件等秘密文件。在支柱状态文件中,我有以下
id_rsa
当我ext_pillar:
- file_tree:
root_dir: /srv/secrets/
follow_dir_links: False
keep_newline: True
- some_other_var: some_other_value
和salt-call saltutil.refresh_pillar
时,我得到以下内容
salt-call pillar.items
我的问题:如何使用[INFO ] Determining pillar cache
[INFO ] Determining pillar cache
local:
----------
ext_pillar:
|_
----------
file_tree:
----------
follow_dir_links:
False
keep_newline:
True
root_dir:
/srv/secrets/
|_
----------
some_other_var:
some_other_value
引用id_rsa
文件的竞争?
当我使用
尝试contents_pillar
时
salt-call state.apply
我得到ssh_private_key:
file.managed:
- name: /root/.ssh/id_rsa
- contents_pillar: ext_pillar:id_rsa
。当我使用Pillar ext_pillar:id_rsa does not exist
时,ext_pillar:some_other_var
有效且设置为contents_pillar
(如上所述)。所以我猜整个支柱系统都在工作,但我错误地引用了它。我也尝试some_other_value
但没有成功。
我的设置:
答案 0 :(得分:2)
file_tree
提供的文件作为支柱数据公开,没有任何区别。
要获取文件tree_root/keys/id_rsa
,您需要使用:
- contents_pillar: keys:id_rsa
根据我的需要,我添加一个名为files
的根文件夹,以确保我不会在file_tree
文件和其他支柱值之间产生冲突。
此外,在当前实现中,您必须将文件放在节点组或主机的目录结构中。
在ext_root
:
nodegroups/servers/ {files}
nodegroups/stations/ {files}
nodegroups/.../ {files}
hosts/host1/ {files}
hosts/host2/ {files}
hosts/.../ {files}
如果您希望所有主机获取某些文件,则必须创建包含所有主机的节点组,然后将文件放入:nodegroups/all/
。但是,您还有其他问题,例如无法使用salt-ssh
来获取您的文件,因为此处不支持节点组(粒度不可用)。我认为这也是独立盐的情况。
所以我想,在您的情况下,您可以将文件放在hosts/{minion_id}
中。 minion_id
是您的主机名。