Linux

使用 service_facts 模組顯示 cron 程序的目前版本?

  • January 29, 2022

我正在從這本書中學習 Ansible,它包含這個實驗室:

根據以下規範編寫劇本:

  • 必須使用 cron 模組在每個工作日的凌晨 2 點重新啟動託管伺服器
  • 重新啟動後,必須將一條消息寫入 syslog,其中包含文本“CRON 啟動的重新啟動完成”
  • 預設 systemd 目標必須設置為多目標
  • 最後一個任務應該使用服務事實來顯示 cron 程序的目前版本

最後一點有點令人困惑。service_facts 模組僅檢索與 crond 的名稱、來源、狀態和狀態相關的事實,但不檢索版本。如何實現這一目標?

這可能是一個錯誤。該請求看起來可疑(或至少模棱兩可)'use service facts to show the current version of the cron process':。服務事實的屬性中沒有版本,例如(在 Ubuntu 上執行)

   - service_facts:
   - debug:
       var: ansible_facts.services['cron.service']

 ansible_facts.services['cron.service']:
   name: cron.service
   source: systemd
   state: running
   status: enabled

而且,'version of process'長得怪怪的。也許他們想要'PID of process'?在這種情況下,使用systemd,例如

   - systemd:
       name: "{{ ansible_facts.services['cron.service']['name'] }}"
     register: result
   - debug:
       var: result.status.ExecMainPID

 result.status.ExecMainPID: '884'

(另見shell> systemctl status cron.service:)

下一個選項可能是他們想要'version of cron binary'的。在這種情況下,使用package_facts,例如

   - package_facts:
   - debug:
       var: ansible_facts.packages.cron.0.version

 ansible_facts.packages.cron.0.version: 3.0pl1-136ubuntu1

在如何獲取正在執行的 cron 守護程序的版本中查看更複雜的選項。它們也可能在 Ansible 中實現自動化。

引用自:https://unix.stackexchange.com/questions/688407