错误:致命:已找到#个节点,但没有建立连接所需的属性。尝试使用--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.
显然,我错过了一些东西。
我应该注意到我能够进入服务器但不能使用大厨客户在配置时检测到的ip-172-31-xx.us-west-2.compute.internal,而不是AWS Public IP
这是否会影响我能够正确运行上述命令?
Chef服务器将节点数据列为
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
但是,用于sshing到实例的信息AWS是
公共DNS :ec2-54-200-xx-xxx.us-west-2.compute.amazonaws.com 公共IP :54.200.xx.xxx
我可以使用AWS公共DNS数据正确地ssh到服务器(非刀)。
如果可能的问题是厨师 - 客户将节点数据提供给厨师服务器的方式,是否需要更正它,以便厨师服务器反映节点是否公共IP数据?
答案 0 :(得分:2)
除非您的工作站位于AWS VPN上,或者实际在VPC内运行,否则您将需要使用-a public_ip_address
。
如果这是一个VPC实例,由于ohai
的某些问题,您可能没有设置该属性。在这种情况下,请确保为ohai
设置ec2提示。最简单的方法是在引导节点时使用--hint ec2
标志。
最后,如果此节点没有公共IP地址,那么许多人不在VPC中,那么您将需要使用代理节点来访问它。 --ssh-gateway
标志用于此目的,并且需要指向VPC的公有子网中的节点。