Ansible 预期不会传递响应

Ansible 预期不会传递响应

我正在尝试使用带有 expect 模块的 Ansible 将 Linux 服务器加入到带有 sssd 的活动目录。

任务中的代码:

- name: join domain
  expect:
    command: /bin/bash -c "/usr/sbin/realm join --user=join-user domain.loc"
    response:
       password: "secret"

我从这个链接获得了代码,因为我在询问之前先在 Google 上搜索了一下: https://groups.google.com/forum/#!msg/ansible-project/L0Es3aGAKV8/DmPRaiGcBwAJ

实际问题是 Ansible 似乎并没有真正响应提示。因为当我运行剧本时它只是超时。我确实通过 ssh 直接测试了它并且它有效。凭据没有问题,并且与域控制器的连接正常。

超时时剧本的输出:

fatal: [192.168.11.1]: FAILED! => {
    "changed": true, 
    "cmd": "/bin/bash -c \"/usr/sbin/realm join --user=join-user domain.loc\"", 
    "delta": "0:00:30.112149", 
    "end": "2017-03-22 08:37:18.320832", 
    "failed": true, 
    "invocation": {
        "module_args": {
            "chdir": null, 
            "command": "/bin/bash -c \"/usr/sbin/realm join --user=join-user domain.loc\"", 
            "creates": null, 
            "echo": false, 
            "removes": null, 
            "responses": {
                "password": "secret"
            }, 
            "timeout": 30
        }, 
        "module_name": "expect"
    }, 
    "msg": "command exceeded timeout", 
    "rc": null, 
    "start": "2017-03-22 08:36:48.208683", 
    "stdout": "Password for join-user: ", 
    "stdout_lines": [
        "Password for join-user: "
    ]
}

任何帮助是极大的赞赏。

答案1

响应必须与标准输出字符串匹配,或者您可以使用正则表达式,在您的情况下您可以使用:

response:
  Password for join-user: "secret"

或者

response:
  Password for .*: "secret"

文档

响应下的问题或关键字是 Python 正则表达式匹配。不区分大小写的搜索以 ?i 前缀表示

相关内容