我们是否有Ansible命令在不使用剧本的情况下运行用户交互式shell脚本?

时间:2018-09-11 13:47:35

标签: ansible ansible-ad-hoc

我有以下需要用户输入的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)请在上面共享我的脚本要求用户输入的正确命令。

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

1 个答案:

答案 0 :(得分: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\"}'"