我正在尝试通过Ansible在Vagrant机器中自动执行脚本安装。
我尝试了很多在网络上找到解决方案,但文档和示例非常薄弱。
我正在尝试安装的脚本提示我正在尝试使用 Ansible Expect Module 以编程方式回答问题。
Ansible Task:
- 名称:“运行Lisk安装”
成为:真实的
become_user:vagrant
预计:
命令:bash installLisk.sh install -r {{env}}
对策:
'你想在哪里安装Lisk? (默认/家庭/流浪者)':“/ home / vagrant”
'想安装NTP吗? (是/否):':“y”
echo:是的
似乎无法识别问题或答案,这是我从配置中回来的错误
任务[lisk:运行Lisk安装] ****************************************
致命:[默认]:失败! => {
“改变”:真实,
“cmd”:“bash installLisk.sh install -r test”,
“delta”:“0:00:30.137468”,
“结束”:“2016-08-26 08:18:46.740017”,
“失败”:真实,
“rc”:null,
“开始”:“2016-08-26 08:18:16.602549”,
“stdout”:“检查先决条件:\ r \ n
已安装卷曲。\ t \ t \ t \ t \ t \ u001b [32mPassed \ u001b(B \ u001b [m \ r \ n]
安装了焦油。\ t \ t \ t \ t \ t \ u001b [32mPassed \ u001b(B \ u001b [m \ r \ n]
已安装Wget。\ t \ t \ t \ t \ t \ u001b [32mPassed \ u001b(B \ u001b [m \ r \ n]
Sudo已安装并经过身份验证。\ t \ t \ t \ u001b [32mPassed \ u001b(B \ u001b [m \ r \ n]
u001b [32mAll先决条件通过!\ u001b(B \ u001b [m \ r \ n]
你想在哪里安装Lisk? (默认/家庭/流浪者):“,
“stdout_lines”:[
“检查先决条件:”,
“已安装卷曲。\ t \ t \ t \ t \ t \ t \ u001b [32mPassed \ u001b(B \ u001b [m”,
“安装了焦油。\ t \ t \ t \ t \ t \ u001b [32mPassed \ u001b(B \ u001b [m”,
“已安装Wget。\ t \ t \ t \ t \ t \ t \ u001b [32mPassed \ u001b(B \ u001b [m”,
“Sudo已安装并经过验证。\ t \ t \ t \ u001b [32mPassed \ u001b(B \ u001b [m”,
“\ u001b [32mAll先决条件通过了!\ u001b(B \ u001b [m”,
“你想在哪里安装Lisk?(默认/家庭/流浪者):”
}}
谢谢所有人提前
答案 0 :(得分:3)
expect
模块中的响应是正则表达式,因此问号具有特殊含义
你可以简单地使用:
- expect:
command: bash installLisk.sh install -r {{env}}
responses:
'install Lisk to': '/home/vagrant'
'install NTP': 'y'
echo: yes