Назад | Перейти на главную страницу

Ansible: как получить вывод команды сценария оболочки на stdout?

Я создаю этот простой скрипт, который настраивает часовой пояс на всех машинах, под названием date.sh

#!/bin/sh
# Exit at first error

set -e

# Set the localtime
timedatectl set-timezone Europe/Zurich

# Check date
date

Я запускаю его с помощью ansible

- name: Transfer and execute a script.
  hosts: all
  become_user: root
  tasks:
     - name: Transfer the script
       copy: src=date.sh dest=/tmp/date.sh mode=0700

     - name: Execute the script
       command: sh /tmp/date.sh

Работает, но как увидеть вывод на стандартный вывод? Я пробовал это, но выдает ошибку.

- name: Transfer and execute a script.
  hosts: all
  become_user: root
  tasks:
     - name: Transfer the script
       copy: src=date.sh dest=/tmp/date.sh mode=0700

     - name: Execute the script
       command: sh /tmp/date.sh

  debug:
    msg: "{{ test.stdout.split('\n') }}"

Вам следует подумать об использовании модуль сценария который сделает копию и выполнит за вас.

После этого вам нужно использовать аргумент задачи register для сохранения результатов в переменной. После сохранения результатов вы можете отобразить их с debug задача.

- name: Transfer and execute a script.
  hosts: all
  become_user: root
  tasks:
  - script: date.sh
    register: results
  - debug:
      var: results.stdout

P.S. Eсть модуль часового пояса. Таким образом, вы можете использовать это и вообще не использовать скрипт.