3

我使用托管厨师已经有一段时间了。想探索开源厨师服务器。因此我试图在 EC2 实例上设置我的 Chef-Server 11。

我正在运行 Chef-server,并且可以访问 Web GUI。我在另一个运行良好的 ec2 实例上配置了 chef-workstation。

问题:我无法上传任何食谱。尝试上传食谱时出现以下错误:

# knife cookbook upload getting-started
Uploading getting-started [0.4.0]
/opt/chef/embedded/lib/ruby/1.9.1/net/http.rb:763:in `initialize': Connection refused - connect(2) (Errno::ECONNREFUSED)

但是,其他list命令knife工作正常。

我做了我的家庭作业并碰到了以下链接:

http://www.opscode.com/blog/2013/03/11/chef-11-server-up-and-running/

http://www.curvve.com/blog/servers/2013/script-to-configure-and-set-your-hostname-and-fqdn-on-ec2-instances/

所以,

提到chef-server需要一个有效的 FQDN 才能工作。我将我的公共 ec2 主机名设置为服务器的主机名,并将其设置为/etc/hosts. 重启了实例。又跑chef-server-ctl reconfigure了。并且仍然面临同样的错误。

问题:如何找出 EC2 实例的 FQDN 部分以供 chef-server 工作?如果有人在 EC2 上成功设置了 chef-server 并且能够上传食谱,那么请分享您的 FQDN 锻炼步骤。

4

4 回答 4

3

我很难解决这个问题,但这个解决方案奏效了!

编辑 /etc/chef-server/chef-server.rb 并添加这些行(如果文件不存在,则创建该文件):

server_name = "THE PUBLIC IP OF YOUR INSTANCE"
api_fqdn server_name
nginx['url'] = "https://#{server_name}"
nginx['server_name'] = server_name
lb['fqdn'] = server_name
bookshelf['vip'] = server_name

我在这里找到了解决方案 http://sahebjade.blogspot.com/2013/05/check-your-knife-configuration-and.html

于 2013-12-04T08:02:26.447 回答
1

这就是我让它工作的方式。更新了我的 ec2 实例 (chef-server) 的公共 DNS 名称/etc/sysconfig/networkservice network restart. 现在我可以上传食谱了。

需要考虑弹性 IP 作为我的厨师服务器的潜在选择。

于 2013-10-25T10:11:50.930 回答
1

编辑/etc/chef-server/chef-server.rb并添加这些行(如果文件不存在,则创建该文件):

bookshelf["vip"] = node["ipaddress"]
bookshelf["url"] = "https://#{node["ipaddress"]}"
erchef['s3_url_ttl'] = 3600

前两行将您的厨师服务器 URL 指向机器的 IP,第三行将解决当厨师服务器在 EC2 上时显然总是存在的超时问题。

于 2013-10-28T18:57:49.903 回答
0

我想扩展一些答案,因为它们没有给出完整的图片。这适用于 Chef 11(希望 Chef 12 更聪明)

在我的情况下,我在 VPC #1 下滚动了一个主控,它给了它一个像这样的内部地址

ip-10-0-0-10.ec2.internal

因为我最初只是在玩 VPC,所以我错误地配置了一些我需要的东西,所以我不得不放弃它并创建了一个新方案。值得庆幸的是,我能够对旧的 Chef 主服务器进行快照并将其置于新的 VPC 下,但我发现我无法再登录 Chef。这需要一些挖掘,但我在我的/var/log/chef-server/chef-server-webui/current日志中发现安装已在旧主机名上显示,并将其设置为...所有内容的内部 URL。这导致内部主机名更改后出现问题

2014-12-24_16:19:09.46680 SocketError: Error connecting to https://ip-10-0-0-10.ec2.internal/users/admin - getaddrinfo: Name or service not known

现在,对于OP的答案

需要考虑弹性 IP 作为我的厨师服务器的潜在选择

就我而言,我只是CNAME在 CloudFlare 中添加了一个并将其设置为我的永久地址。由于我可以在该地址上将 CloudFlare 设置为较低的 TTL,因此可以轻松地在 IP 更改之间移动它(我不需要弹性 IP,而我只是在配置它)。这样我就可以告诉 Chef 始终查找相同的 URL,而不必担心 EIP。

完成后,我必须更新 Chef。我不知道发生了什么变化(这是 11.16.4),但我发现配置/var/opt/chef-server/chef-server-webui/etc/chefserver.rb与其他一些答案列表相反chef-server.rb。不确定这是否是 YMMV 的事情。我将以下内容更改为该文件的底部

# Environment specific application configuration.
# These values override the ones set in 'RAILS_ROOT/config/application.rb'
#config.chef_server_url = "https://ip-10-0-0-10.ec2.internal"
config.chef_server_url = "https://chef.mydomain.com"

我也变了/var/opt/chef-server/nginx/etc/chef_https_lb.conf

server_name chef.mydomain.com;

最后我重新启动了厨师

chef-server-ctl restart

这似乎成功了。登录再次起作用。

于 2014-12-24T16:46:46.703 回答