【问题标题】:WARNING: Failed to connect to ip-xxx-xx-xx-xx警告:无法连接到 ip-xxx-xx-xx-xx
【发布时间】:2015-04-06 12:11:12
【问题描述】:

错误:致命:找到 # 个节点,但没有建立连接所需的属性。尝试使用 --attribute 设置另一个属性以打开连接。

我开始尝试使用 chef knife 命令运行命令时遇到的问题。如您所见,目的是让命令在角色的任何服务器部分上运行。

所以,当我运行命令时,我得到以下信息

knife ssh "role:servers" "touch /home/ubuntu/file.txt"

WARNING: Failed to connect to ip-172-31-8-x.us-west-2.compute.internal -- SocketError: getaddrinfo: nodename nor servname provided, or not known
WARNING: Failed to connect to ip-172-31-94-xb.us-west-2.compute.internal -- SocketError: getaddrinfo: nodename nor servname provided, or not known
WARNING: Failed to connect to ip-172-31-99-x.us-west-2.compute.internal -- SocketError: getaddrinfo: nodename nor servname provided, or not known

当我尝试新属性时

knife ssh "role:web" "touch /home/ubuntu/file.txt" -x ubuntu -a hostname

FATAL: 6 nodes found, but does not have the required attribute to establish the 
connection. Try setting another attribute to open the connection using --attribute.

我尝试了不同的属性,但没有运气

knife ssh "role:servers" "touch /home/ubuntu/file.txt" -a ec2.public_hostname
knife ssh "role:servers" "touch /home/ubuntu/file.txt" -a public_hostname


knife ssh "role:servers" "touch /home/ubuntu/testfile.txt" --attribute 54.68.122.109 -i /Users/useraccount/.ssh/mykey.pem -x ubuntu

FATAL: 2 nodes found, but does not have the required attribute to establish the connection. Try setting another attribute to open the connection using --attribute.

显然我错过了什么。

我应该注意,我可以通过 ssh 进入服务器,但不能使用 Chef-clients 在配置时检测到的 ip-172-31-xx.us-west-2.compute.internal,而是使用 AWS Public知识产权。

这会影响我正常运行上面的命令吗?

Chef server 将节点数据列为

FQDN:ip-172-31-xx-xx.us-west-2.compute.internal

IP 地址:172.31.xx.xx

使用 AWS 设置匹配,

私有 DNS:ip-172-31-xx-xx.us-west-2.compute.internal

私有 IP:172.31.xx.xx

但是,AWS 用于 sshing 到实例中的信息是

公共 DNS:ec2-54-200-xx-xxx.us-west-2.compute.amazonaws.com 公共 IP : 54.200.xx.xxx

这是我可以用来正确 ssh 到服务器(非刀)的 AWS 公共 DNS 数据。

如果问题可能是厨师客户端将节点数据提供到厨师服务器的方式,是否可以更正它以便厨师服务器反映节点 aws 公共 IP 数据?

【问题讨论】:

  • 在此处查看第二个答案的 cmets:serverfault.com/questions/641951/…
  • 如果使用刀创建 ec2 服务器可能会出现这种情况,但是,我使用自动安装选项,其中 chef-client -j /etc/chef/mynodes.json 检测实例设置然后将自身添加到厨师服务器。这就是问题所在。 FQDN 和 IP 地址显示不正确。我认为他们应该向公共 DNS 名称和 IP 地址显示。因此,如果是这种情况,很想知道 chef-clinet 如何添加此信息。看chef-clinet,看不到如何传入公共信息。

标签: amazon-web-services amazon-ec2 chef-infra knife


【解决方案1】:

除非您的工作站在 AWS VPN 上,或者实际上在您的 VPC 中运行,否则您需要使用 -a public_ip_address

如果这是一个 VPC 实例,由于ohai 的一些问题,您可能没有设置该属性。在这种情况下,请确保为 ohai 设置 ec2 提示。最简单的方法是在引导节点时使用--hint ec2 标志。

最后,如果该节点没有公共 IP 地址,因为许多 VPC 中没有,那么您需要使用代理节点来访问它。 --ssh-gateway 标志用于此目的,并且需要指向您的 VPC 的公共子网中的一个节点。

【讨论】:

  • 谢谢特杰。我仍然遇到同样的问题。我引用了这个文档页面,但找不到您提到的 --hint ec2 link 当我尝试 --hint ec2 选项时,我得到 "Error: invalid option: --hint"接下来,我执行了手册页中提到的命令以在所有 EC2 Web 服务器上运行,我得到了与本主题相同的错误消息。 -x ubuntu -a ec2.public_hostname
  • --hint 添加到 bootstrap 命令,而不是 ssh 命令。它确保节点将设置node[:public_ip_address] 属性。
  • 我正在使用unattended install chef-client -j /etc/chef/mynodes.json 运行命令。在此之后,节点将自身添加到厨师服务器。但是,似乎无法弄清楚这把刀 ssh 的事情
  • 那么您需要以另一种方式手动添加 ec2 提示。通过在/etc/chef/ohai/hints/ec2.json 处添加一个空文件(该文件可以是完全空白的),或者使用 oahi 食谱github.com/opscode-cookbooks/ohai
  • 谢谢特杰!添加文件/etc/chef/ohai/hints/ec2.json,然后重新运行厨师客户端以重新装订它自己工作。
猜你喜欢
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 2011-04-07
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多