【问题标题】:Ansible, connecting to bastion server in AWS VPC, host unreachableAnsible,连接到 AWS VPC 中的堡垒服务器,主机无法访问
【发布时间】:2018-12-18 22:49:19
【问题描述】:

如何使用 Ansible 2.x 连接到 AWS VPC 中的堡垒服务器以执行 Docker 群设置?我见过this question 和official FAQ。

已经尝试通过--extra-vars 提供以下内容: ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q user@my.bastion.server.com"' 甚至使用带有上述参数的ansible.cfg,甚至类似:

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=600s -J ec2- 
user@my.bastion.dns.com

我尝试了很多组合,但在 playbook 中运行 ping 命令时总是收到此错误消息:

UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the 
host via ssh: ssh: connect to host 10.1.xx.xx port 22: Operation timed 
out\r\n",

可能值得一提的是:

  1. 我可以正常使用 ssh -J 选项连接到我的 VPC 中的私有主机,例如:ssh -J user@my.bastion.server.com user@vpc.host.private.ip。
  2. 我正在使用 Ansible 的 ec2.py 动态清单,其中配置了 ec2.ini 以映射给定标签条目的私有 ip。

【问题讨论】:

  • 由于您超时,您的 VPC 的路由表和 NACL 可能配置错误,或者您的堡垒实例的安全组正在阻止传入的网络流量。当您成功连接到堡垒主机时,它是否来自您的 playbook 正在执行 SSH playbook 的同一台计算机?或者该剧本是否在其他远程计算机上运行 SSH 剧本?

标签: amazon-web-services amazon-ec2 ssh ansible amazon-vpc


【解决方案1】:

这是一个 ssh 配置错误的问题。

我能够使用这些参数修复配置。

1) Ansible.cfg 文件

[ssh_connection]
ssh_args = -o ProxyCommand="ssh -W %h:%p -q $BASTION_USER@$BASTION_HOST" -o ControlPersist=600s 
control_path=%(directory)s/%%h-%%r
pipelining = True

2) Ec2.ini 文件

[ec2]
regions = us-xxxx-x
destination_variable = private_ip_address
vpc_destination_variable = private_ip_address

3) 剧本执行命令

export BASTION_USER=xxx-xxxx;
export BASTION_HOST=ec2-xx-xx-xx-xx.xxxxx.compute.amazonaws.com;
ansible-playbook -u ec2-xxxx \
 -i ./inventory/ec2.py \
 ./playbook/ping.yml \
 --extra-vars \
 "var_hosts=tag_Name_test_private ansible_ssh_private_key_file=~/.ssh/my-test-key.pem" -vvv

瞧!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-29
    • 2022-11-08
    • 2018-07-18
    • 1970-01-01
    • 2018-07-16
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多