Ansible:在本地运行交互式 Bash 脚本只需运行通过

问题描述 投票:0回答:1

我有一个交互式构建脚本,其中包含如下部分:

echo "Is this correct?"
select yn in "Yes" "No"; do
    case $yn in
        Yes ) break;;
        No ) exit;;
    esac
done

如果我单独运行脚本 (

./runscript.sh
),那么我会得到正确的提示。

但是如果我从 Ansible 内部运行 Bash 脚本,如下所示:

  tasks:
    - name: Run script
      shell: "./runscript.sh {{param1}} {{param2}} {{param3}}"
      args:
          chdir: "../../path/to/script/"
      run_once: true
      delegate_to: localhost

然后这个事情就跑过去了,没有任何提示,我也不知道是怎么回事。完成了吗?怎么样,用什么设置?它是否总是隐含地假设“是”?

ansible
1个回答
1
投票

shell 模块执行失败。如果打印脚本执行的

rc
,它应该与0不同。
原因是shell模块 通过 shell (/bin/sh) 运行命令,而
select
是 Bash 构造。

© www.soinside.com 2019 - 2024. All rights reserved.