Configuration-Management

在 SaltStack 執行期間關閉 Cron

  • November 2, 2017

如果我們用 SaltStack 更新我們的系統,這大約需要 40 秒。

在這 40 秒內,系統的狀態並不一致。

如果有在此期間啟動的 cron 作業,它們很可能會產生奇怪的錯誤。

當然,我們可以完全改變我們的設置並使用容器。這將使原子更新成為可能。但這需要大量的工作,而今天無法處理。

如果鹽被執行,有沒有辦法在minion上禁用cron作業?

要完全禁用 cron 作業,您可以簡單地關閉cron守護程序(它通常crond在 CentOS 和cronUbuntu 伺服器中)。

您可以直接在 salt run 中停止和啟動它。

如果您只需要為某些特定的 cron 作業禁用 cron 執行,您可以創建一個腳本(我們稱之為run-crons)並使用它來禁用特定的 cron 執行。例如,您可以創建類似於以下內容的 cron 條目:

* * * * * root run-crons && echo "this is my actual cron job"

run-crons腳本類似於

#!/bin/bash
set -e

[ -f /etc/disabled/crons ] && exit 10

exit 0

因此,如果/etc/disabled/crons存在,則前面的那些特定 cronrun-crons行將不會執行。您也可以在鹽執行期間創建/刪除禁用文件

要在 salt 執行時停止cron守護程序,只需包含如下狀態:

stop_cron:
 service.dead:
   - name: cron
   - order: 1

start_cron:
 service.running:
   - name: cron
   - order: last

您可能需要根據您的 linux 發行版調整 cron 守護程序的名稱

順便說run-crons一下,包括一個 .sls 類似的東西:

disable_cron:
 file.managed:
   - name: /etc/disabled/cron
   - replace: false
   - order: 1

enable_cron:
 file.absent:
   - name: /etc/disabled/cron
   - order: last

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