【问题标题】:Ansible-Failed to connect to the host via sshAnsible - 无法通过 ssh 连接到主机
【发布时间】:2017-02-08 09:28:20
【问题描述】:

我正在尝试配置 EC2 实例并使用来自本地主机的 Ansible 在其上安装 LAMP 服务器。我已成功配置实例,但由于此错误“无法通过 ssh 连接到主机”,我无法安装 apache、php 和 mysql。

操作系统:El Capitan 10.11.6

Ansible:2.0.2.0

这是剧本:`---

- hosts: localhost
  connection: local
  gather_facts: no
  vars_files:
    - "vars/{{ project_name }}.yml"
    - "vars/vpc_info.yml"
  tasks:
- name: Provision
  local_action:
    module: ec2
    region: "xxxxxx"
    vpc_subnet_id: "xxxxxx"
    assign_public_ip: yes
    key_name: "xxxxxxx"
    instance_type: "t2.nano"
    image: "xxxxxxxx"

    wait: yes
    instance_tags:
      Name: "LAMP"
      class: "test"
      environment: "dev"
      project: "{{ project_name }}"
      az: a
    exact_count: 1
    count_tag:
      Name: "LAMP"
    monitoring: yes
  register: ec2a

- hosts: lamp
  roles:
    - lamp_server

ansible.cfg 文件内容:

[defaults]
private_key_file=/Users/nico/.ssh/xxxxx.pem

库存:

lamp     ansible_ssh_host=<EC2 IP> ansible_user=ubuntu

用于运行 playbook 的命令:

ansible-playbook  -i inventory  ec2_up.yml -e project_name="lamp_server"  -vvvv 

输出:

 ESTABLISH SSH CONNECTION FOR USER: ubuntu
<xxxxxxxxxx> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o 'IdentityFile="/Users/nico/.ssh/xxxxxxx.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/Users/nico/.ansible/cp/ansible-ssh-%h-%p-%r xxxxxxx '/bin/sh -c '"'"'( umask 22 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1475186461.08-93383010782630 `" && echo "` echo $HOME/.ansible/tmp/ansible-tmp-1475186461.08-93383010782630 `" )'"'"''
52.28.251.117 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}

我已经阅读了很多关于此错误的帖子,但没有任何帮助。 :(

【问题讨论】:

  • 问题已解决:在运行 playbook 的命令末尾添加 -c paramiko
  • ansible-playbook -i inventory ec2_up.yml -e project_name="lamp_server" -vvvv -c paramiko 工作
  • 请将此添加到此问题的答案中,并选中“已接受”框。回答并接受你自己的答案没有错。

标签: ssh amazon-ec2 ansible


【解决方案1】:

ansible-playbook -i inventory ec2_up.yml -e project_name="lamp_server" -vvvv -c paramiko

【讨论】: