Ansible Expect模块无法匹配字符串/正则表达式脚本问题

时间:2016-08-26 08:39:02

标签: vagrant ansible ansible-playbook


我正在尝试通过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?(默认/家庭/流浪者):”

}}

谢谢所有人提前

1 个答案:

答案 0 :(得分:3)

expect模块中的响应是正则表达式,因此问号具有特殊含义 你可以简单地使用:

- expect:
    command: bash installLisk.sh install -r {{env}}
    responses:
      'install Lisk to': '/home/vagrant'
      'install NTP': 'y'
    echo: yes