Configuration
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 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 master 守護程序。