我使用托管主厨已有一段时间了。想要探索开源厨师服务器。因此我试图在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/
所以,
提到chef-server
需要有效的FQDN才能工作。我将我的公共ec2主机名设置为服务器的主机名,并在/etc/hosts
中进行设置。重新启动实例。再次跑chef-server-ctl reconfigure
。并且仍面临同样的错误。
问题:如何找出EC2实例的FQDN部分以使Chef-server工作?如果有人在EC2上成功设置了厨师服务器,并且能够上传食谱,那么请分享您的FQDN锻炼步骤。
答案 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/network
和service 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
这似乎已经成功了。登录再次工作。