saltstack 配置“未找到顶级文件或外部节点数据匹配”

saltstack 配置“未找到顶级文件或外部节点数据匹配”

这个问题的一个非常相似的版本是这里,但由于此人将其顶级文件放在了错误的目录中,因此情况完全不同。

我有 3 个项目,分别称为 project1、project2 和 project3。我的目标是创建一个 master/minion 设置,其中我的 srv/salt 目录如下所示:

/srv/salt
        |top.sls
        |/project1
                 |__/postgresql
                         |__init.sls
                         |__config.sql
                 |__/iptables
                         |__init.sls
                         |__config.sh
        |/project2
                 |__/tomcat
                         |__init.sls
                         |__config.sh
                 |__/java
                         |__init.sls
                         |__config.sh
        |/project3
                  |__/serverconfig
                         |__init.sls
                         |__config.sql
                 |__/conky
                         |__init.sls
                         |__config.sh

为了实现这一点,我编辑了 /etc/salt/master 以读取

#/etc/salt/master
file_roots:
  base:
    - /srv/salt
  project1:
    - /srv/salt/project1
  project2:
    - /srv/salt/project2
  project3:
    - /srv/salt/project3

我还想设置节点,因为我有涉及每个项目的静态服务器,这对我来说是一种非常直观的组织方式。

我首先编辑 /etc/salt/master 来显示我的节点组

#/etc/salt/master
nodegroups:
  project1: 'L@project1_server1,project1_server2,project1_server3'
  project2: 'L@project2_server1,project2_server2,project2_server3'
  project3: 'L@project3_server1,project3_server2,project3_server3'

在运行设置好的程序时,我尝试使用以下命令将 project1 状态应用到其服务器:

salt -N project1 state.highstate

这对于 project1_server2 和 project1_server3 来说正确完成,但是对于 project1_server1 来说失败。

project1_server1 的错误是“未找到顶级文件或外部节点数据匹配”

我愿意听取关于如何更轻松地实施此设置的建议,但我想知道此设置不起作用的原因。感谢您的帮助。

编辑1

添加我的 top.sls 文件

#/srv/salt/top.sls
project1:
  project1:
    - match: nodegroup
    - postgresql
    - iptables
project2:
  project2:
    - match: nodegroup
    - tomcat
    - java
project3:
  project3:
    - match: nodegroup
    - serverconfig
    - conky

编辑2

salt -N project1grains.item id 的输出

project1_server1:
    ----------
    id:
        project1_server1
project1_server2:
    ----------
    id:
        project1_server2:
project1_server3:
    ----------
    id:
        project1_server3:

编辑3

正确答案由 ChrisV 提供

问题出在 /etc/salt/master 中节点的语法错误。我需要更改它,然后重新启动 salt-master

pkill salt-master
salt-master -d

答案1

节点组定义应如下:

project1: 'L@project1_server1,project1_server2,project1_server3'

Per Salt文档:节点组复合匹配器

另请注意,需要重新启动 salt master 守护进程。

相关内容