Saltstack

通過 Jenkins 進行鹽狀態測試

  • March 7, 2018

全部,

我們正在嘗試在我們的 Jenkins 設置中進行自動化測試,以在我們的鹽狀態文件 ( .sls) 中執行“煙霧”和“棉絨”類型的測試。到目前為止,所有 google-foo 都產生了很少的資訊。有一種方法可以test=True在命令行中進行測試,但這不適用於無 shell 帳戶(就像 Jenkins 的帳戶通常那樣)。

我還沒有遇到任何人對 SaltStack 狀態進行這種自動化測試。所以:

1)有沒有可能

2)任何人都知道我可以查看的好資源

TIA。

**碼頭工人。**伺服器配置的快速自動化測試是 docker 指出的一個不可否認的現實問題。它可以在一秒鐘內提供一台已經啟動並在網路上偵聽的干淨電腦。使用 /srv/salt bind-mounted 啟動映像,您可以執行salt-call --local state.highstate -l debug以測試狀態而無需大驚小怪salt-key

我知道 SaltStack, Inc 以同樣的方式使用 LXC。他們可能仍然這樣做。

至於測試——如果你對你的狀態文件很聰明和小心,你可以認為一個乾淨的第二次執行是成功的標誌。

這很難實現,因為某些狀態總是會重新執行。Salt Stack 一直擅長修復這些被發現的狀態。與此同時,您將不得不用內聯 jinja 條件包圍這些狀態,這些條件在執行時在 minion 上執行命令:

{% if salt['cmd.retcode']('your test here') %} 
some-identifier:
 some.module:
   - name: some anme
{% endif %}'

有一個jenkins-docker 外掛

docker 外掛的目的是能夠使用 docker 主機動態配置從屬伺服器,執行單個建構,然後拆除該從屬伺服器。

或者,您可以通過新的 docker-ng salt 模組自動化整個過程:

salt dockhost docker-ng.create states-qa rm=True binds="/srv/salt:/srv/salt"
salt dockhost docker-ng.retcode states-qa 'salt-call --local state.highstate' # run 1
salt dockhost docker-ng.retcode states-qa 'salt-call --local state.highstate' # run 2
salt dockhost docker-ng.stop states-qa

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