-2

我有以下需要用户输入的shell脚本:

 read -e -p "Enter any string:" varible
 echo  'Entered value is ::' $varible > abc.txt

我想运行这个脚本,它需要用户在多个服务器中输入并使用下面的 yml 实现:

- name: Here we start
  hosts: all

  tasks:  # is a list
  - name: Execute the user interactive script
  expect:                                                                   
       command: /usr/bin/sh /home/ansible/test.sh
       responses:
            "Enter any string:": "Success Script Executed"

但是,如果我尝试使用以下命令,则相同,它不会促进用户输入:

 ansible all -a 'sh /home/ansible/test.sh'

1)请分享正确的ansible命令,要求用户输入我上面的脚本。

2)另外,对于我上面的脚本,请分享正确的 ansible 命令,该命令代表用户采用默认值。

4

1 回答 1

1

ansible您可以使用以下命令运行任何单个 Ansible 模块:

  • 将模块名称作为值提供给--module-name=MODULE_NAME( -m)

  • 将模块参数作为值提供给--args=MODULE_ARGS( -a)

在上述任务的情况下:

ansible all -m expect -a "command='/usr/bin/sh /home/ansible/test.sh' responses='{\"Enter any string:\": \"Success Script Executed\"}'"
于 2018-09-11T14:14:01.887 回答