Я пытаюсь вставить вывод оболочки Linux в переменную, но по какой-то причине переменная всегда пуста.Ansible: вывод сценария оболочки всегда пустой
Вот код анзибль:
- name: Check PHP version
shell: php -v 2> /dev/null | awk '{print $2; exit}'
register: php_version
- debug: var=php_version
А вот выход:
ok: [10.0.0.5] => {
"php_version": {
"changed": true,
"cmd": "php -v 2> /dev/null | awk '{print $2; exit}'",
"delta": "0:00:00.015180",
"end": "2017-01-08 18:41:00.323773",
"rc": 0,
"start": "2017-01-08 18:41:00.308593",
"stderr": "",
"stdout": "",
"stdout_lines": [],
"warnings": []
}
}
Когда я запускаю команду непосредственно на сервере, я получаю правильный результат:
php -v 2> /dev/null | awk '{print $2; exit}'
7.0.14
В чем может быть проблема?
Я не могу воспроизвести эту проблему. Я скопировал ваши пьесы и побежал на обоих ansible 2.0.1.0 на macos и ansible 2.3.0 на ubuntu, и я правильно понял stdout на обоих. –
Я тоже не могу воспроизвести. Когда вы запускаете команду непосредственно на сервере, используете ли вы одного пользователя и shell '/ bin/sh', который использует Ansible? – Zlemini
No. Ansible работает с другим пользователем с указанного сервера. – Omri