CHEF Server--Error: Network Error: getaddrinfo: nodename nor servname provided, or not known

CHEF Server--Error: Network Error: getaddrinfo: nodename nor servname provided, or not known

我正在尝试更新托管在 AWS EC2 实例上的 Chef 服务器。这是我尝试连接到服务器时发生的情况:

$ knife ssl check
Error: Network Error: getaddrinfo: nodename nor servname provided, or not  
known

我只能想到刀具配置的问题。然而,所有 knife 函数都在 AWS EC2 实例中工作,而不是在我的本地机器 (Macbook+iTerm) 上。

knife.rb EC2

log_level              :info
log_location           STDOUT
node_name              'jdoe'
client_key             '/home/ec2-user/.chef/jdoe.pem'
validation_client_name   'chef-validator'
validation_key           '/etc/chef-server/chef-validator.pem'
chef_server_url          'https://ip-xx-x-x-xxx.ec2.internal:443'
syntax_check_cache_path  '/home/ec2-user/.chef/syntax_check_cache'    

knife.rb 在本地机器上

log_level                :info
log_location             STDOUT
node_name                'jdoe'
client_key               '/Users/.../.chef/jdoe.pem'
validation_client_name   'chef-validator'
validation_key           '/Users/.../.chef/chef-validator.pem'
chef_server_url          'https://ip-xx-x-x-xxx.ec2.internal:443'       
syntax_check_cache_path  '/Users/yoonsulee/.chef/syntax_check_cache'

# Amazon AWS
knife[:aws_access_key_id]='A...........Q'     # actual access key
knife[:aws_secret_access_key]='Q.............................g'      # actual secret access eky
knife[:aws_ssh_key_id]='xyz-abcd'        # general key name used for AWS access

我的 AWS 安全组和 ACL 都很好。而且我能够以某种方式从以下位置下载 'trusted_certs':

$ knife ssl fetch

最终,我尝试从我的 Chef 存储库目录执行以下操作:

$ berks upload <new_cookbook> --force
$ knife role from file ../../roles/*

看起来问题是由于您使用了 EC2 实例的内部 DNS 名称。除非您通过 VPN 连接到您的 AWS VPC,否则这将无法解决。 您应该更改工作站的 knife.rb 以使用 Public DNS 名称(如果存在)。如果您不想为您的实例创建 public 端点,您将需要通过 VPN 连接到您的 VPC 以使内部端点可解析。