【问题标题】:UNREACHABLE error while running an Ansible playbook运行 Ansible 剧本时出现 UNREACHABLE 错误
【发布时间】:2018-06-14 10:22:14
【问题描述】:

我确实可以通过 ssh 访问目标机器,并且它可以工作,但是每当我运行这个 playbook 时,我都会得到这个错误输出:

sudo ansible-playbook ansible-playbook-test.yml

PLAY [openstack] *****************************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************************
fatal: [amachine]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive).\r\n", "unreachable": true}
        to retry, use: --limit @/blah/ansible-play/ansible-playbook-test.retry

PLAY RECAP ***********************************************************************************************************************************************************************************************
amachine       : ok=0    changed=0    unreachable=1    failed=0

我的剧本就这么简单:

---
# hosts could have been "remote" or "all" as well

- hosts: openstack
  tasks:
    - name: test connection
      ping:
      remote_user: djuarezg
      vars:
        ansible_ssh_extra_args: '-K -o ControlPath=none'



- hosts: openstack
  tasks:
    - name: Create Swarm cluster
      command: mkdir djg
      vars:
        ansible_ssh_extra_args: '-K -o ControlPath=none'

我试图使用ansible_ssh_extra_args: '-K -o ControlPath=none' 来查看它是否能够转发 Kerberos 票证,但任何类型的连接都足够了。

【问题讨论】:

  • 目标/远程机器上是否安装了python?
  • ssh 身份验证应该如何工作?您已为用户djuarezg 交换了 ssh 密钥?

标签: ansible


【解决方案1】:

试试这个:

$ ansible-playbook --user=djuarezg -vvv ansible-playbook-test.yml

检查输出中的 SSH 参数

【讨论】:

    【解决方案2】:

    我在通过 jumpbox 处理大型主机库存时遇到了类似的问题。 我的设置很高以加快大型播放,但在引入跳转框时播放效果不佳,我遇到了这个随机无法到达的问题。

    解决方案是减少分叉的数量。
    15 还可以,但 10 是我环境的最佳选择...

    【讨论】:

      【解决方案3】:

      这对我有用:

      $ cd /root/.ssh
      $ ssh-keygen -t rsa
      

      以id_rsa的名字保存密钥

      $ cat id_rsa.pub
      

      复制整个密钥并粘贴到文件(位于路径:/.ssh/ 或 /root/.ssh 的主节点)中:

      $ sudo nano authorized_keys
      

      然后运行这个来检查:

      $ ansible all -m ping -u root
      

      输出应该是这样的:

      master-node | SUCCESS => {
          "changed": false,
          "ping": "pong"
      }
      

      【讨论】:

        【解决方案4】:

        添加用户指定为我修复了它 - -u deploy

        ansible-playbook [...yml] -u deploy
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-26
          • 2019-01-29
          • 1970-01-01
          • 2016-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多