我有以下需要用户输入的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命令。
答案 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\"}'"