基于正确的stdout值的回显消息

时间:2020-04-23 04:44:33

标签: ansible ansible-2.x ansible-facts

团队

不确定为什么我的带有回显的消息没有打印出来。如果要在停止过程之前运行的命令成功执行,我想打印文本。

就我而言,我正在检查apache2进程状态。基本上,如果stdout为空,则传递,如果stderr存在,则失败。我也提到了这个链接,但没有运气。 https://stackoverflow.com/questions/26142343/ansible-conditional-based-on-stdout-of-result

- name: stop apache2 process
  command: systemctl stop apache2
  ignore_errors: no
  changed_when: false
  register: service_apache2_status
  become: true

- debug:
    var: service_apache2_status.stdout
- name: Check if apache2 stopped
  command: echo "Successfully Stopped Apache2"
#  when: service_apache2_status.stdout == " "
  when: service_apache2_status.stdout | length == 0

实际输出:

TASK [diskcache_prerequisites : stop apache2 process] **********************************************************************************
ok: [localhost]

TASK [diskcache_prerequisites : debug] *************************************************************************************************
ok: [localhost] => {
   "service_apache2_status.stdout": ""
}

TASK [diskcache_prerequisites : Check if apache2 stopped] ******************************************************************************
changed: [localhost]

预期输出:

TASK [diskcache_prerequisites : Check if apache2 stopped] ******************************************************************************
changed: [localhost]
Successfully Stopped Apache2

1 个答案:

答案 0 :(得分:0)

如果您使用systemd module而不是尝试使用command:手动调用systemctl,则根本不需要“检查apache2是否已停止”

关于您的问题:如果您想查看输出,那就是- debug: msg="Successfully stopped Apache2"的目的; command:模块不是通用的调试工具,它用于运行命令