4

是否可以通过 ansible ad-hoc 命令(使用 shell ,命令模块)调用在 bash 中定义的远程函数(例如添加到存储在 /etc/profile.d 下的脚本之一中)?

例如,我有以下功能可以查看 apt 历史记录的状态:

function apt-history(){
  case "$1" in
    install)
          cat /var/log/dpkg.log | grep 'install '
          ;;
    upgrade|remove)
          cat /var/log/dpkg.log | grep $1
          ;;
    rollback)
          cat /var/log/dpkg.log | grep upgrade | \
              grep "$2" -A10000000 | \
              grep "$3" -B10000000 | \
              awk '{print $4"="$5}'
          ;;
    *)
          cat /var/log/dpkg.log
          ;;
  esac
}

是否可以通过 ad-hoc 命令从 ansible 现有模块之一直接通过函数名调用此函数?我知道可以创建一个新脚本并直接远程调用它,但这不是我想要在这里实现的。任何建议表示赞赏。

4

1 回答 1

3

您必须使用如下命令或 shell 模块在远程端实例化 bash:

ansible localhost -m command -a 'bash -lc apt-history'

如果您需要设置环境变量,这是一个常见的技巧。

于 2014-10-23T06:02:34.660 回答