2014-03-02 38 views
2

我開始使用Salt Stack來協調配置的項目。但它現在不起作用 - 日誌文件(在minion上,在/ var/log/salt/minion中)沒有顯示任何錯誤,但小衆沒有按照我的要求去做。獨立鹽僕人沉默失敗

基本上,我建立了一個SaltStack與幾個頂級文件和至少兩個小配置配置。特別是,我調試奴才我打電話引導(因爲它應該引導在僕從鹽主):

master: localhost 
file_client: local 
file_roots: 
    base: 
    - /srv/salt/base 
    - /srv/salt/states 
    master: 
    - /srv/salt/master 
    - /srv/salt/master/states 

據我所知,鹽只是加載了上面的文件很好,並將它們解析爲有效的對象,但Salt沒有運行任何響應對象的命令。事實上,走狗日誌文件說:

2014-03-01 23:00:09,644 [salt.utils.jinja ][DEBUG ] Jinja search path: '['/srv/salt/base', '/srv/salt/state 
2014-03-01 23:00:09,651 [salt.template ][DEBUG ] Rendered data from file: /srv/salt/base/top.sls: 
base: 
    '*': 
    - edit.vim 
    - essential 
    - users.root 

2014-03-01 23:00:09,656 [salt.loaded.int.render.yaml][DEBUG ] Results of YAML rendering: 
OrderedDict([('base', OrderedDict([('*', ['edit.vim', 'essential', 'users.root'])]))]) 

這一切都看起來不錯,但它立即跳轉到:

2014-03-01 23:00:09,661 [salt.utils.jinja ][DEBUG ] Jinja search path: '['/srv/salt/master', '/srv/salt/mas 
2014-03-01 23:00:09,662 [salt.template ][DEBUG ] Rendered data from file: /srv/salt/master/top.sls: 
master: 
    '10.47.94.0/24': 
    - match: ipcidr 
    - master 
    - srv.dns.unbound 

2014-03-01 23:00:09,665 [salt.loaded.int.render.yaml][DEBUG ] Results of YAML rendering: 
OrderedDict([('master', OrderedDict([('10.47.94.0/24', [OrderedDict([('match', 'ipcidr')]), 'master', 'srv.dns.unbound'])]))]) 

在日誌文件中的所有剩餘,基地再也沒有提起。與base相關的命令/狀態沒有運行。我確實看到了edit.vim,srv.dns.unbound等的日誌條目。但它們都遵循相同的模式:解析並且什麼都不做。

我在做什麼錯?我得到了一個模糊的印象,即它與我的minion配置中有多個file_roots有關,但我寧可不進行架構更改,直到我知道該架構應該是什麼。 (我已經嘗試過一次使用鹽,跑進「這個」沉默的錯誤,開始了,現在碰到了一遍)

+0

你能嘗試運行鹽\ * test.ping,以確認該鹽主能夠與附庸通信(同時檢查鹽僕從是否也經歷了由主接受鑰匙)? –

+0

@JasonZhu:我沒有高手呢。這個堆棧應該定義一個運行master的master-less minion。這樣的想法是,我會提供這臺機器,並有我的鹽堆的其餘部分使用它作爲主。 – nomen

+0

你解決了嗎?您可以嘗試運行'salt-call --local test.ping'來查看它是否響起。 – leonardinius

回答

1
master: localhost 
file_client: local 

「主:本地主機」和「file_client:本地」選項相互排斥。

如果你有'file_client:local',那麼當地的salt-minion根本不會尋找主人。

如果想在同一臺機器上運行一個salt-master和salt-minion,那麼你會在minion config中使用'master:localhost',並留下'file_client'註釋掉。 在這種情況下,你也應該保持你的僕從和主配置分開。

至於你關於top.sls文件渲染的問題。這是根據設計。 Salt將查找並呈現每個文件環境根目錄中的每個top.sls。所以,因爲你有兩個環境,它總是會渲染兩個top.sls文件,然後評估它們對於每個minion來確定每個minion執行的sls文件。

這將需要一些更多的信息來解決爲什麼基礎環境中的狀態沒有被執行。嘗試運行以下命令,並提供輸出:

salt-call state.show_highstate -l debug 
1

這是通常的混亂,我開始閱讀saltstack文件。

  1. 總是堅持主人設置,避免任何嘗試玩,甚至「思想無主」。去Masterless並不能爲你節省大量的CPU資源,但是對於鹽醃學習/構建過程會造成更多的困惑。

  2. 總是繪製一個邏輯圖,而不是「直接思考鹽層」。

  3. 問 問題時,即始終寫下正確的/明確的文件路徑和名稱。對於配置文件,狀態等,不要走捷徑。

我想要做類似的操作,即使用我的intranet salt-master名稱AA在數據中心D中提供一個salt master X,然後從salt master X開始提供minion provision以控制數據中心D內的所有minion 。

所以這是順理成章的事情這

鹽主AA < - >(數據中心d

Server XYZ [Salt master X, Salt minion X to AA ], 
Server S_1 [Salt minion S_1, salt-master X ], 
Server S_2 [Salt minion S_2, salt-master X ], 
Server S_3 [Salt minion S_3, salt-master X ] 

所以鹽主AA將控制服務器XYZ作爲僕從。然後,我可以從主AA發送的控制代碼的下一級服務器XYZ,或許運行自動化腳本來卸載AA鹽僕從連接器。