0

I create this simple script which adjust timezone on all machines, called date.sh

#!/bin/sh
# Exit at first error

set -e

# Set the localtime
timedatectl set-timezone Europe/Zurich

# Check date
date

I run it with 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

Works, but how to see output on stdout? I have tried this, but give me error.

- 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') }}"
2

You should consider just using the script module which will do the copy and execution for you.

After that you need to use the task argument register to store the results into a variable. Once the results are stored you can display it with a debug task.

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

P.S. There is a timezone module. So you could use that and not have to use a script at all.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.