CHEF 服务器--错误:网络错误:getaddrinfo:提供节点名或服务名,或未知
Posted
技术标签:
【中文标题】CHEF 服务器--错误:网络错误:getaddrinfo:提供节点名或服务名,或未知【英文标题】:CHEF Server--Error: Network Error: getaddrinfo: nodename nor servname provided, or not known 【发布时间】:2015-10-30 20:20:40 【问题描述】:我正在尝试更新托管在 AWS EC2 实例上的 Chef 服务器。这是我尝试连接到服务器时发生的情况:
$ knife ssl check
Error: Network Error: getaddrinfo: nodename nor servname provided, or not
known
我只能想到刀配置的问题。但是,所有刀功能都在 AWS EC2 实例中工作,而不是在我的本地机器(Macbook+iTerm)上。
EC2 上的 knife.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'
本地机器上的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/*
【问题讨论】:
【参考方案1】:看起来问题是由于您使用了 EC2 实例的内部 DNS 名称。除非您通过 *** 连接到您的 AWS VPC,否则这将无法解决。 如果存在公共 DNS 名称,您应该更改工作站的 knife.rb 以使用公共 DNS 名称。如果您不希望为您的实例创建公共端点,则需要通过 *** 连接到您的 VPC 以使内部端点可解析。
【讨论】:
我确实在 knife.rb 中使用了公共 DNS,但错误消息是说证书(在 ~/.chef/trusted_certs 中下载)与 Chef-server 证书不匹配AWS 实例 (var/opt/opscode/../nginx/ca/SERVER_HOSTNAME.crt)。仅供参考,我拥有的证书与上述内部/私有 DNS 产生了共鸣。 主厨服务器必须有一个可解析的主机名。编辑 /etc/chef-server/chef-server.rb - 更改第一行: server_name = "instance-public-dns-record-here" 保存然后运行: "sudo chef-server-ctl reconfigure" 清除本地trusted_certs文件夹并重新运行knife ssl检查knife ssl fetch 我更改了 AWS 实例中的 chef-server.rb 语法,但无法运行“sudo chef-server-ctl reconfigure”命令:'错误:权限被拒绝 - /opt/chef-server/embedded/cookbooks/cache/chef-client-running.pid' 'FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)' 有没有办法读取 -在我的本地机器上的仓库中从 AWS 实例添加角色、食谱等? 你能重新运行 sudo chef-server-ctl reconfigure - 你得到相同的响应吗?可能只是一个陈旧的 pid。 我将“api_fqdn”更改为与本地knife.rb 匹配的公共DNS url。 'knife ssl check' 已经过验证,因此很有希望。我能够使用“文件 ../../roles* 中的刀角色”从我的 repo 目录上传新角色,但是当尝试执行“berks upload以上是关于CHEF 服务器--错误:网络错误:getaddrinfo:提供节点名或服务名,或未知的主要内容,如果未能解决你的问题,请参考以下文章
部署 OpsWorks 应用程序时出现 Chef::Exceptions::UnresolvableGitReference 错误
OpsWorks 部署错误 - Chef::Exceptions::ChildConvergeError
chef-client错误:Errno :: ENOENT:没有这样的文件或目录@ rb_sysopen-/ etc / chef / chef_guid
批量安装-Artifactory-从ARTIFACTORY_URL / api / chef / some-chef-repo HANGS中获取食谱索引