我在独立的minion模式中使用salt,即只有一个没有master的实例 . /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
My question :如何使用 contents_pillar
参考例如 id_rsa
文件的竞争?
当我尝试 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
(如上所述) . 所以我猜整个支柱系统都在工作,但我错误地引用了它 . 我也尝试了 ext_pillar:file_tree:id_rsa
没有成功 .
我的设定:
-
Debian jessie
-
salt-call 2015.8.8.2(Beryllium)(使用Salt Masterless Quickstart中的bootstrap脚本安装)
1 回答
file_tree
提供的文件作为支柱数据公开,没有任何区别 . 要获取文件tree_root/keys/id_rsa
,您需要使用:- contents_pillar: keys:id_rsa
根据我的需要,我添加一个名为files
的根文件夹,以确保我不会在file_tree
文件和其他支柱值之间产生冲突 .此外,在当前实现中,您必须将文件放在节点组或主机的目录结构中 .
在
ext_root
:如果希望所有主机都获取某些文件,则必须创建包含所有主机的节点组,然后将文件放入:
nodegroups/all/
. 但是,您还有其他问题,例如无法使用salt-ssh
获取您的文件,因为此处不支持节点组(粒度不可用) . 我认为这也是独立盐的情况 .所以我想,在您的情况下,您可以将文件放在
hosts/{minion_id}
中 .minion_id
是您的主机名 .