团队
不确定为什么我的带有回显的消息没有打印出来。如果要在停止过程之前运行的命令成功执行,我想打印文本。
就我而言,我正在检查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
答案 0 :(得分:0)
如果您使用systemd
module而不是尝试使用command:
手动调用systemctl
,则根本不需要“检查apache2是否已停止”
关于您的问题:如果您想查看输出,那就是- debug: msg="Successfully stopped Apache2"
的目的; command:
模块不是通用的调试工具,它用于运行命令