Ansible:如何在 stdout 上获取 shell 脚本命令的输出?

Ansible:如何在 stdout 上获取 shell 脚本命令的输出?

我创建了这个简单的脚本来调整所有机器上的时区,称为 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

可以,但是如何在 stdout 上查看输出?我试过了,但是出现错误。

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

答案1

你应该考虑使用脚本模块它将为您完成复制和执行。

之后,您需要使用任务参数register将结果存储到变量中。存储结果后,您可以使用任务显示它debug

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

PS 有一个时区模块。因此您可以使用它而根本不需要使用脚本。

相关内容