从ansible ping ec2 实例

Mik*_*gin 6 ssh amazon-ec2 ansible

我有一个 ec2 amazon linux 正在运行,我可以通过 ssh 来使用:

ssh -i "keypair.pem" ec2-user@some-ip.eu-west-1.compute.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用 ansible ping 服务器时,我得到:

testserver | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下主机文件:

testserver ansible_ssh_host=some-ip.eu-west-1.compute.amazonaws.com ansible_ssh_user=ec2-user ansible_ssh_private_key_file=/Users/me/playbook/key-pair.pem
Run Code Online (Sandbox Code Playgroud)

并运行以下命令来运行 ansible:

ansible testserver -i hosts -m ping -vvvvv
Run Code Online (Sandbox Code Playgroud)

输出是:

<some-ip.eu-west-1.compute.amazonaws.com> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<some-ip.eu-west-1.compute.amazonaws.com> SSH: ansible.cfg set ssh_args: (-o)(ControlMaster=auto)(-o)(ControlPersist=60s)
<some-ip.eu-west-1.compute.amazonaws.com> SSH: ANSIBLE_PRIVATE_KEY_FILE/private_key_file/ansible_ssh_private_key_file set: (-o)(IdentityFile="/Users/me/playbook/key-pair.pem")
<some-ip.eu-west-1.compute.amazonaws.com> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)
<some-ip.eu-west-1.compute.amazonaws.com> SSH: ANSIBLE_REMOTE_USER/remote_user/ansible_user/user/-u set: (-o)(User=ec2-user)
<some-ip.eu-west-1.compute.amazonaws.com> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)
<some-ip.eu-west-1.compute.amazonaws.com> SSH: PlayContext set ssh_common_args: ()
<some-ip.eu-west-1.compute.amazonaws.com> SSH: PlayContext set ssh_extra_args: ()
<some-ip.eu-west-1.compute.amazonaws.com> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/Users/me/.ansible/cp/ansible-ssh-%h-%p-%r)
<some-ip.eu-west-1.compute.amazonaws.com> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o 'IdentityFile="/Users/me/playbook/key-pair.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ec2-user -o ConnectTimeout=10 -o ControlPath=/Users/me/.ansible/cp/ansible-ssh-%h-%p-%r ec2-52-18-106-35.eu-west-1.compute.amazonaws.com '/bin/sh -c '"'"'( umask 22 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1462096401.65-214839021792201 `" && echo "` echo $HOME/.ansible/tmp/ansible-tmp-1462096401.65-214839021792201 `" )'"'"''
testserver | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

小智 5

尝试这个解决方案,它对我来说效果很好

ansible ipaddress  -m ping  -i inventory -u ec2-user
Run Code Online (Sandbox Code Playgroud)

其中 inventory 是主机文件名。

inventory :    
[host]
xx.xx.xx.xx
[host:vars]
ansible_user=ec2-user
ansible_ssh_private_key_file=/location of your pem file/filename.pem
Run Code Online (Sandbox Code Playgroud)

我遇到了这个问题,因为我没有给出我所指的主机文件的位置。


小智 0

我遇到了类似的问题,阅读连接到您的实例的故障排除对我有所帮助。具体来说,我从 Amazon-Linux 实例 ping 一个 Ubuntu 实例,但忘记将连接用户名从“ec2-user”更改为“ubuntu”!