Ruby on rails CHEF服务器--错误:网络错误:getaddrinfo:nodename或servname已提供,或未知

Ruby on rails CHEF服务器--错误:网络错误:getaddrinfo:nodename或servname已提供,或未知,ruby-on-rails,ruby,amazon-web-services,amazon-ec2,chef-infra,Ruby On Rails,Ruby,Amazon Web Services,Amazon Ec2,Chef Infra,我正在尝试更新托管在AWS EC2实例上的Chef服务器。这是我尝试连接到服务器时发生的情况: $ knife ssl check Error: Network Error: getaddrinfo: nodename nor servname provided, or not known 我只能想到刀具配置的问题。但是,所有刀子功能都在AWS EC2实例中工作,而不是在我的本地机器上(Macbook+iTerm) EC2上的刀.rb log_level :inf

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

$ knife ssl check
Error: Network Error: getaddrinfo: nodename nor servname provided, or not  
known
我只能想到刀具配置的问题。但是,所有刀子功能都在AWS EC2实例中工作,而不是在我的本地机器上(Macbook+iTerm)

EC2上的刀.rb

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'    
本地机器上的刀.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都很好。我还可以从以下网站下载“可信证书”:

$ knife ssl fetch
最后,我尝试从我的Chef repo目录中执行以下操作:

$ berks upload <new_cookbook> --force
$ knife role from file ../../roles/*
$berks上传——强制
文件中的$role.././角色/*

问题似乎是由于您使用了EC2实例的内部DNS名称。除非您已通过VPN接入AWS VPC,否则无法解决此问题。
您应该更改工作站的knife.rb以使用公共DNS名称(如果存在)。如果您不希望为您的实例创建公共终结点,则需要VPN到VPC以使内部终结点可解析。

我确实在knife.rb中使用了公共DNS,但错误消息是证书(下载在~/.chef/trusted_certs中)与AWS实例中的chef服务器证书不匹配(var/opt/opscode/。/nginx/ca/SERVER_HOSTNAME.crt)。仅供参考,我拥有的证书与上述内部/私有DNS.chef服务器必须具有可解析的主机名。编辑/etc/chef SERVER/chef-SERVER.rb-更改第一行:SERVER_name=“instance public DNS record here”保存并运行:“sudo chef SERVER ctl reconfiguration”清除本地trusted_certs文件夹并重新运行刀子ssl check刀子ssl Fetch我更改了AWS实例中的chef-server.rb语法,但无法运行“sudo chef server ctl reconfigure”命令:“错误:权限被拒绝-/opt/chef-server/embedded/cookbooks/cache/chef client running.pid”“致命:chef::Exceptions::ChildConvergeError:chef运行进程退出失败(退出代码1)“有没有办法从AWS实例读取本地机器上的repo以添加角色、食谱等?能否重新运行sudo chef server ctl reconfigure?是否得到相同的响应?可能只是一个陈旧的pid。我将“api_fqdn”更改为与本地knife.rb匹配的公共DNS url。“knife ssl检查”已验证,因此很有希望。”。我可以使用'knife role from file.././roles*'从我的repo目录上载新角色,但是当尝试执行'berks upload--force'时,我得到一个“连接到Chef服务器时出错”错误。另外,在尝试执行“刀子ec2服务器创建…”时,我能够启动一个新实例,但似乎没有实现所有的配方。我是否应该返回到前一段时间运行的原始chef-server.rb?