【发布时间】:2019-01-06 23:06:53
【问题描述】:
我正在尝试在 VM 上自动执行一些手动任务。 作为其中的一部分,我的虚拟机没有直接的 root 访问权限。 所以我必须使用不同的用户,然后升级到 root。 当我尝试切换到 root 用户时,密码提示与默认提示不同。 我看到的提示如下图
================== [user1@vm-1 tmp]$ su - root
输入登录密码:
我编写了一个剧本来测试连接性。剧情如下
=======================================
hosts: vm-1
any_errors_fatal: true
become: true
become_method: su
become_user: root
gather_facts: no
vars:
ansible_become_pass: "r00t"
tasks:
name: Test me
command: 'echo works'
======================================
我的主机文件如下所示
localhost ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
vm-1 ansible_ssh_host=1.2.3.4
ansible_connection=ssh
ansible_ssh_user=user1
ansible_ssh_pass=password
ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
======================================
使用此配置,当我尝试运行游戏时,我遇到了错误
致命:[vm-1]:失败! => {"msg": "超时(12s)等待特权 升级提示:“}
相同的剧本适用于不同的虚拟机,但尝试将用户切换到 root 时的提示只是“Passowrd”
感谢您对此的帮助。
顺便说一句,我在 ansible 2.4、2.5 版本中尝试过这个。在这两个版本中,我都遇到了同样的错误。
提前致谢。 拉穆
【问题讨论】:
-
我认为一些 Ansible 2.x 版本的 github 中提到了这个 bug。您可以尝试通过在 ansible.cfg 中添加 timeout=30 来增加超时
-
我在 2.8.2 中遇到了这个确切的错误,结果是我的远程 VM 的 DNS 设置错误。更正
/etc/resolv.conf后我不再收到错误。 -
@ServerFault 你能告诉我们你是如何更正“resolv.conf”文件的,它有什么问题吗?一个指向要点的链接将不胜感激。谢谢!
-
@LukaszDynowski - 我已将我的虚拟机从测试环境迁移到生产环境。测试中的 DNS 解析器具有与生产不同的 IP 地址。一旦我重新配置
/etc/resolv.conf以指向正确的主机,问题就消失了。我推测,因为启动sudo的用户是 LDAP 帐户,ansible 无法通过 DNS 找到 LDAP 服务器以验证提升的会话。非常基本的解析器(注意:我不在我的服务器上使用resolvconfUbuntu 软件包),但这里是:pastebin.com/dL38PujC -
@ServerFault 我的用例略有不同,我知道我的生产机器的 IP 地址,并且我在 LDAP less setup 中工作。但是非常感谢您的意见,非常感谢:)
标签: ansible