如何在无主模式下使用来自ext_pillar:file_tree的contents_pillar引用支柱项目?

时间:2016-05-01 08:36:20

标签: salt-stack

我在独立的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_valuesalt-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但没有成功。

我的设置:

1 个答案:

答案 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是您的主机名。