为什么Ansible注册变量未定义?

时间:2017-10-22 19:09:00

标签: ansible

我有一个非常简单的Ansible任务模块,它执行以下操作:

# Runs a couple of plays successfully...

- name: check if php-fastcgi process running
  shell: ps -eaf | grep php5-cgi | grep -v grep
  register: php-fastcgi-status
  ignore_errors: True
  changed_when: False

- debug: var=php-fastcgi-status.rc
- meta: end_play

当我运行我的剧本时,我收到以下错误:

TASK [php: check if php-fastcgi process running] ********
ok: [myexample.com]

TASK [php: debug] ***********
ok: [myexample.com] => {
    "php-fastcgi-status.rc": "VARIABLE IS NOT DEFINED!"
}

然而,如果我登录服务器并手动运行相同的命令:

ps -eaf | grep php5-cgi | grep -v grep

......我看到了所有的过程。如果我做了

echo $?

我按照预期得到“0”。我的Ansible剧本中我做错了什么?我一直在阅读Ansible文档并且在过去三个小时里一直在努力解决这个问题,并且看不出有什么问题。

1 个答案:

答案 0 :(得分:2)

您的注册变量名称包含无效字符。将-替换为_

register: php_fastcgi_status

来自What Makes A Valid Variable Name

  

变量名称应为字母,数字和下划线。变量   应该始终以一封信开头。

TASK [debug] *******************************************************************
ok: [localhost] => {
    "php_fastcgi_status.rc": "0"
}