在EC2实例上安装Chef-Server 11

时间:2013-10-25 09:28:10

标签: amazon-ec2 chef fqdn

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

我有Chef-server运行,我可以访问Web GUI。我在另一个ec2实例上配置了大厨工作站,工作正常。

问题:我无法上传任何食谱。 当我尝试上传食谱时,我得到以下错误:

# 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上成功设置了厨师服务器,并且能够上传食谱,那么请分享您的FQDN锻炼步骤。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这就是我如何运作的方式。更新了/etc/sysconfig/networkservice network restart中我的ec2实例(chef-server)的公有DNS名称。现在我可以上传好的食谱了。

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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

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

  

IP-10-0-0-10.ec2.internal

因为我最初只玩VPC,所以我错误配置了一些我需要的东西,所以我不得不放弃它,我创建了一个新方案。值得庆幸的是,我能够对旧的厨师大师进行快照并在新的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作为我的主厨服务器的潜在选项

在我的情况下,我刚刚向CloudFlare添加了CNAME并将其设置为我的永久地址。由于我可以将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

这似乎已经成功了。登录再次工作。