Ansible以交互方式响应非预设远程shell输出
提前感谢您在这方面提供的任何建议/帮助 我尝试过“expect”和shell/command模块的多次迭代,但都没有提供我(我想象其他人)在这种情况下想要做的事情。与更广泛的群体接触,希望有一个我还没有找到的解决方案 我们的软件有一个shell命令,它打印出它将修改的文件列表,并提示用户继续使用标准的[y/n]提示。与百胜在升级软件时所做的类似,它会输出大量输出并等待用户输入Ansible以交互方式响应非预设远程shell输出,shell,ansible,prompt,Shell,Ansible,Prompt,提前感谢您在这方面提供的任何建议/帮助 我尝试过“expect”和shell/command模块的多次迭代,但都没有提供我(我想象其他人)在这种情况下想要做的事情。与更广泛的群体接触,希望有一个我还没有找到的解决方案 我们的软件有一个shell命令,它打印出它将修改的文件列表,并提示用户继续使用标准的[y/n]提示。与百胜在升级软件时所做的类似,它会输出大量输出并等待用户输入 The following changes need to be made: Create /
The following changes need to be made:
Create /home/XYZ-file
Enable and start the ABC service
Enable and start the DEF service
Allow? [y/N] n
有时,根据它列出的文件,我们不想继续。。。有时候,我们会。因此,我希望能够提示我的ansible用户,并根据列表为他们提供选择。我知道这是令人恼火的人工干预,并不是出于自动化的精神,但就这一步而言,我们愿意放弃一切,让一个人实际查看这些文件并做出决定
当前“expect”仅将预设输出与预设用户响应相匹配。我不想这样做,因为我不知道哪些文件将呈现给用户,所以我不能使用任何预设
我希望显示shell命令的所有输出,并提示ansible用户根据输出做出决定
发出命令并注册输出的简单任务:
- name: Issue XYZ command
shell: xyz
register: xyz_output
- debug: var=xyz_output.stdout
问题是,在这种情况下,shell命令挂起,因为ansible无法:
显示输出
&
提示ansible用户是否继续
非常感谢您的帮助 您可以参考的yaml样本,并根据您的要求进行改进
---
- hosts: all
gather_facts: False
tasks:
- name: print
shell: cat inventory
register: fileout
- debug: var=fileout.stdout
- name: pause
pause: prompt='Confirm action by giving - yes/no:'
register: pause
- name: Ansible create file.
file:
path: "/home/ansible/vops.txt"
state: touch
mode: 0777
when: pause.user_input == 'yes'
- name: Ansible start service
service:
name: httpd
state: started
when: pause.user_input == 'yes'
我已使用“”模块暂停播放并提示输入,并使用“”条件比较输入结果并处理操作。基础软件是否允许运行多次?我这样问是因为如果是这样,您可以在第一次运行它,对每个提示给出
n
答案,然后您将有下一次要再次询问的问题,因为它们在第一次都是n
-ed的(使系统保持其启动时的状态,只要“n”采取“否”操作)