如何通过Ansible with modules而不是shell查看单个服务状态?

如何通过Ansible with modules而不是shell查看单个服务状态?,ansible,ansible-2.x,ansible-facts,Ansible,Ansible 2.x,Ansible Facts,需要使用Ansible playbook检查多个系统上的单一服务状态,有没有办法使用服务模块而不是shell模块 使用服务模块(以及相关的更具体的模块,如systemd),您可以确保服务处于所需状态 例如,以下任务将启用apache启动启动(如果尚未配置)、启动(如果停止)以及报告更改(如果进行了任何更改)或确定(如果不需要更改) - name: Enable and start apache service: name: apache enabled: yes st

需要使用Ansible playbook检查多个系统上的单一服务状态,有没有办法使用服务模块而不是shell模块

使用
服务
模块(以及相关的更具体的模块,如
systemd
),您可以确保服务处于所需状态

例如,以下任务将启用apache启动启动(如果尚未配置)、启动(如果停止)以及报告更改(如果进行了任何更改)或确定(如果不需要更改)

- name: Enable and start apache
  service:
    name: apache
    enabled: yes
    state: started
这些模块不支持只检查服务状态而不进行任何更改。您必须使用命令行分析输出/返回状态

systemd示例

- name: Check status of my service
  command: systemctl -q is-active my_service
  check_mode: no
  failed_when: false
  changed_when: false
  register: my_service_status

- name: Report status of my service
  debug:
    msg: "my_service is {{ (my_service_status.rc == 0) | ternary('Up', 'Down') }}"
需要注意的是:

  • check_模式:否
    在ansible_playbook命令行上使用“--check”时让任务运行。否则,在检查模式下,下一个任务将因未定义变量而失败
  • failed\u when:false
    在返回代码不同于0(服务未启动时)时阻止任务失败。您可以更具体地列出正常情况下所有可能的返回代码,并在获得其他返回代码时失败(例如,
    失败\u当:not(我的服务\u状态为[0,3,X])
  • changed\u when:false
    使任务始终报告ok,除了默认情况下命令和shell模块的
    changed

使用
服务
模块(以及相关的更具体的模块,如
systemd
),您可以确保服务处于所需状态

例如,以下任务将启用apache启动启动(如果尚未配置)、启动(如果停止)以及报告更改(如果进行了任何更改)或确定(如果不需要更改)

- name: Enable and start apache
  service:
    name: apache
    enabled: yes
    state: started
这些模块不支持只检查服务状态而不进行任何更改。您必须使用命令行分析输出/返回状态

systemd示例

- name: Check status of my service
  command: systemctl -q is-active my_service
  check_mode: no
  failed_when: false
  changed_when: false
  register: my_service_status

- name: Report status of my service
  debug:
    msg: "my_service is {{ (my_service_status.rc == 0) | ternary('Up', 'Down') }}"
需要注意的是:

  • check_模式:否
    在ansible_playbook命令行上使用“--check”时让任务运行。否则,在检查模式下,下一个任务将因未定义变量而失败
  • failed\u when:false
    在返回代码不同于0(服务未启动时)时阻止任务失败。您可以更具体地列出正常情况下所有可能的返回代码,并在获得其他返回代码时失败(例如,
    失败\u当:not(我的服务\u状态为[0,3,X])
  • changed\u when:false
    使任务始终报告ok,除了默认情况下命令和shell模块的
    changed