使用service_facts模块显示cron进程的当前版本?

使用service_facts模块显示cron进程的当前版本?

我正在从这本书中学习 Ansible,它包含这个实验:

根据以下规范编写剧本:

  • 必须使用 cron 模块在每个工作日凌晨 2 点重新启动托管服务器
  • 重新启动后,必须将一条消息写入系统日志,其中包含文本“CRON 启动重新启动已完成”
  • 默认 systemd 目标必须设置为多目标
  • 最后一个任务应该使用服务事实来显示 cron 进程的当前版本

最后一点有点令人困惑。 service_facts 模块仅检索与 crond 的名称、来源、状态和状态相关的事实,但不检索版本。如何实现这一目标?

答案1

这可能是一个错误。该请求看起来可疑(或至少不明确)'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:
        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:
    - debug:
        var: ansible_facts.packages.cron.0.version

给出

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

查看更复杂的选项如何获取正在运行的 cron 守护进程的版本。它们也可能在 Ansible 中实现自动化。

相关内容