警告:无法连接到 ip-xxx-xx-xx-xx
WARNING: Failed to connect to ip-xxx-xx-xx-xx
错误:致命:找到 # 个节点,但没有建立连接所需的属性。尝试设置另一个属性以使用 --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 进入服务器,但不能使用 ip-172-31-x-x.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
但是,AWS sshing 到实例的信息是
Public DNS : ec2-54-200-xx-xxx.us-west-2.compute.amazonaws.com
Public IP : 54.200.xx.xxx
这是 AWS Public DNS 数据,我可以使用它正确地通过 ssh 连接到服务器(非刀)。
如果问题可能出在 chef-client 向 chef 服务器提供节点数据的方式,是否可以更正它以便 chef 服务器反映节点 aws public ip 数据?
除非您的工作站位于 AWS VPN 上,或者实际上 运行 在您的 VPC 内,否则您需要使用 -a public_ip_address
。
如果这是一个 VPC 实例,可能由于 ohai
的某些问题,您没有设置该属性。在这种情况下,请确保为 ohai
设置 ec2 提示。最简单的方法是在 bootstrap 节点时使用 --hint ec2
标志。
最后,如果此节点没有 public IP 地址,因为许多节点不在 VPC 中,那么您将需要使用代理节点来访问它。 --ssh-gateway
标志用于此目的,需要指向 VPC 的 public 子网中的节点。
错误:致命:找到 # 个节点,但没有建立连接所需的属性。尝试设置另一个属性以使用 --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 进入服务器,但不能使用 ip-172-31-x-x.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
但是,AWS sshing 到实例的信息是
Public DNS : ec2-54-200-xx-xxx.us-west-2.compute.amazonaws.com Public IP : 54.200.xx.xxx
这是 AWS Public DNS 数据,我可以使用它正确地通过 ssh 连接到服务器(非刀)。
如果问题可能出在 chef-client 向 chef 服务器提供节点数据的方式,是否可以更正它以便 chef 服务器反映节点 aws public ip 数据?
除非您的工作站位于 AWS VPN 上,或者实际上 运行 在您的 VPC 内,否则您需要使用 -a public_ip_address
。
如果这是一个 VPC 实例,可能由于 ohai
的某些问题,您没有设置该属性。在这种情况下,请确保为 ohai
设置 ec2 提示。最简单的方法是在 bootstrap 节点时使用 --hint ec2
标志。
最后,如果此节点没有 public IP 地址,因为许多节点不在 VPC 中,那么您将需要使用代理节点来访问它。 --ssh-gateway
标志用于此目的,需要指向 VPC 的 public 子网中的节点。