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




我正在尝试在Vagrant机器中通过Ansible自动安装脚本

我试了很多方法在网上找到解决方案,但文档和示例都很薄弱

我试图安装的脚本正在提示我试图用Ansible Expect Module以编程方式回答的问题

可靠任务:

-name:"正在运行Lisk安装">
 nbsp;变为:真
 nbsp;become_user:流浪者
 nbsp;预期:
 nbsp nbsp nbsp;命令:bash installLisk.sh install-r{{env}}
 nbsp nbsp nbsp;回复:
 nbsp nbsp nbsp nbsp nbsp nbsp;'你想把Lisk安装到哪里?(默认值/home/roarant(':"/home/ravarant">
 nbsp nbsp nbsp nbsp nbsp nbsp;'要安装NTP吗?(y/n(:':"y">
 nbsp nbsp nbsp;echo:是

它似乎无法识别问题或答案,这是我从配置中得到的错误
TASK[lisk:运行lisk安装]********************************

致命:[默认值]:失败!=>{
"已更改":true,
"cmd":"bash installLisk.sh install-r test",
"delta":"0:00:30.137468",
"end":"2016-08-26 08:18:46.740017",
"失败":true,
"rc":null,
"开始":"2016-08-26 08:18:16.602549",

"stdout":"检查先决条件:\r\n
Curl已安装。\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 preqrequisites passed!\u001b(B\u001b[m\r\n
你想把Lisk安装到哪里?(默认/家庭/流浪者(:",

"stdout_lines":[
"检查先决条件:",
"Curl已安装。\t\t\t\t\u001b[32mPassed\u001b(B\u001b[m",
"焦油已安装。\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\t\u001b[32mPassed\u001b(B\u001b[m",
"\u001b[32mAll preqrequisites passed!\u001b(B\u001b[m",
"你想把Lisk安装到哪里?(默认/home/warrant(:">
]}

谢谢大家提前

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

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

最新更新