Configuration

saltstack 配置“找不到頂級文件或外部節點數據匹配”

  • December 5, 2014

此處詢問了此問題的一個非常相似的版本,但由於該人的頂級文件位於錯誤的目錄中,因此完全不同。

我有 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 project1 grains.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

節點組定義應如下:

project1: 'L@project1_server1,project1_server2,project1_server3'

每個 Salt 文件:節點組復合匹配器

另請注意,需要重新啟動 salt master 守護程序。

引用自:https://serverfault.com/questions/649563