我刚刚设立了一个新的厨师环境,因为我正在扩大我对厨师的知识。 我有一个在EC2上设置的密钥对,我有我的刀子configuration设置。 当我尝试产生一个服务器,节点被创build,但刀不能ssh进入它。 这是我的knife.rb (这是回购之外): current_dir = File.dirname(__FILE__) log_level :info log_location STDOUT node_name "mynode" client_key "/Users/me/.chef/my.pem" validation_client_name "my-validator" validation_key "/Users/me/.chef/my-validator.pem" chef_server_url "https://api.opscode.com/organizations/myorg" cache_type 'BasicFile' cache_options( :path => "/Users/me/.chef/checksums" ) cookbook_path ["/Users/me/git/chef/cookbooks"] knife[:aws_access_key_id] = "yadayadyada" knife[:aws_secret_access_key] = "blahblahblah" knife[:identity_file] = "/Users/me/.ssh/knife.pem" knife[:aws_ssh_key_id] = "knife" 这是我的刀子命令: knife ec2 server create -r "role[whatever]" -I ami-09470539 –subnet subnet-03e44866 -f […]
用stream浪configuration下地。 主机是Windows。 我有一个非常简单的configuration,所以我想使用Ansible,但得到这个: [default] Running provisioner: ansible… The executable 'ansible-playbook' Vagrant is trying to run was not found in the %PATH% variable. This is an error. Please verify this software is installed and on the path. 所以基本上,我认为Vagrant希望Ansible自己安装,并试图使用Ansible(我没有)的现有实例。 我的问题是:无论是厨师或木偶build成stream浪? 我希望能够安装Vagrant并运行它应该工作的方式,而不必在主机上安assembly置系统。 谢谢!
总的来说(据我所知),主要的基础设施/configurationpipe理系统(Puppet,Chef,Ansible和SaltStack)是基于你的服务器是“牛”而不是“宠物”的理念。看起来他们可能会与您将configuration直接更改到服务器的想法相悖。 虽然我曾经和Chef,Puppet和Salt一起工作过,但从一个开发者和Vagrant合作开发个人盒子的angular度来看,我的经验总是无法回答这个问题。 问题是:这些系统中的任何一个都支持直接向服务器进行更改的用例,并且不用担心本地守护进程会用官方configuration覆盖它呢? 您应该能够做出改变(并且理想地设定在其期间被覆盖保护的时间窗口),而不对厨师食谱或盐状态进行任何显着改变。 这个用例的全部目的是为了避免让公司的摩擦和寻找合适的(例如)盐状态并确保没有任何副作用并且经历释放/部署循环和testing,以确保你在这个过程中没有任何东西。 如果你想要一个更具体的例子,假设你想调整多个日志的logrotate设置,来平衡保存驱动器空间和访问历史数据。 您可以了解在任何特定环境下您将保存多less数据,以及您认为需要保留多less数据,但是您不能100%确定。 (1)任何人抱怨说,他们需要更多的历史数据来进行一些debugging任务,或者(2)您没有像预期的那样节省更多的驱动器空间,并且需要保存。 如果你的configurationpipe理系统允许它变成一个,那么五分钟的变化实际上可能是一个五分钟的变化,然后一旦你确定你希望所有的变化满足特定的angular色,你可以让厨师/木偶/盐/ Ansiblepipe理你的。 注意:我不是在询问configurationpipe理系统尚未pipe理某种types的configuration文件的用例,而是一个已经在pipe理某种types的configuration文件的情况,但是您想进行本地更改并且让他们在给定的机器上优先,而不会被覆盖。 有没有这些系统支持我的使用情况? (不要求我与系统作斗争或做后空翻使其工作。)
我已经在Ubuntu 12.10系统上使用官方的.deb软件包安装了chef-server 。 安装完成后,我运行 chef-server-ctl test 哪个成功报告, 0失败。 服务器(Amazon EC2实例)具有1个networking接口,其中有一个内部地址分配给它。 假设IP地址是10.223.92.58而hostname -f返回类似于: ip-10-223-92-58.eu-west-1.compute.internal 但是,AWS EC2允许使用53.242.31.23或DNS ec2-53-242-31-23.eu-west-1.compute.amazonaws.com从Internet访问服务器。 为了允许通过公共DNS名称访问,我在/etc/chef-server/chef-server.rb添加了以下几行: lb[:enable] = "false" lb[:web_ui_fqdn] = "ec2-53-242-31-23.eu-west-1.compute.amazonaws.com" nginx[:server_name] = "ec2-53-242-31-23.eu-west-1.compute.amazonaws.com" nginx[:url] = "https://ec2-53-242-31-23.eu-west-1.compute.amazonaws.com" nginx[:enable_non_ssl] = "true" 我可以使用https://ec2-53-242-31-23.eu-west-1.compute.amazonaws.com访问服务器并进入login页面。 login页面会将我(login成功后)redirect到用户编辑页面,以便更改我的密码。 (这是devise)。 问题: redirect到用户编辑页面将不起作用,因为用户控制器(或其他控制器)会抱怨一个不存在的会话,并将我重新定向到login页面。 如果我尝试从本地DNS域名或IP访问该页面,则问题不存在。 我是否缺less一些configuration值?
我有几个服务器,我与厨师pipe理。 它们都属于一个networking,其中带宽与外部互联网相比其中的带宽较大。 问题是:很多时候需要从网上下载一些档案。 当我在每台我需要的服务器上运行主厨客户端时,他们都会上网并从那里下载。 这需要一些时间,而他们可以先打到局域网内的某个服务器,然后检查这个文件是否已经存在。 我需要的是像apt-cacher-ng这样的代理服务器,但是对于普通文件,可以根据url或文件校验和进行存储。 因此,如果caching中没有必需的文件,每个厨师客户端都可以首先在这个cacher中检查文件,然后才在互联网上检查文件。 理想情况下,这个cacher可以作为一个代理 – 这样一旦它得到一个url的请求,它就下载文件本身,将它存储在某个地方并将其返回给请求者。 问题是:我可以configurationapt-cacher-ng吗? 还是有任何其他代理或caching服务器可能是有用的(Apache,Nginx的)? 我只需要帮助configuration这个代理服务器,因为只要它准备好了,我就可以自己更改厨师客户端的configuration。
我是开发者的新手,我一直在努力将一个Python应用程序打包成一个RPM(使用python setup.py bdist_rpm),通过Yum部署到一个centos VM上。 厨师是用来pipe理虚拟机。 Python应用程序将在virtualenv中运行,作为持续部署过程的一部分。 如果RPM是智能且独立的,那么执行诸如创build/启动virtualenv环境,pip-安装所需的依赖关系,然后最终configuration一个init进程(在这种情况下启动virtualenv的uwsgi REST服务器进程)? 或者,如果Chef食谱pipe理构buildvirtualenv和pip安装依赖项,RPM自己做一个简单的“python setup.py install”来将我的Python模块加载到virtualenv的pythonX.Y / site-packages文件夹中? “yum install / reinstall”调用(通过自动化进程)的后续操作可以适用于这两种方法,但前者需要更复杂的RPM,这可能不是“最佳实践”,是正确的吗? 前者确实允许一个独立的安装,以后可以更干净地删除,并更好地分离开发人员(Python)和dev-ops(厨师)之间的关注。 请告知什么是“典型”完成。
我正在使用厨师刀启动新的ec2实例。 这工作通常很好,但每2-3次尝试失败,我得到以下堆栈: [Sun, 10 Apr 2011 08:11:23 +0000] INFO: Client key /etc/chef/client.pem is not present – registering [Sun, 10 Apr 2011 08:11:29 +0000] WARN: HTTP Request Returned 401 Unauthorized: Failed to authenticate as i-XXXXXXX. Ensure that your node_name and client key are correct. /usr/lib/ruby/1.8/net/http.rb:2101:in `error!': 401 "Unauthorized" (Net::HTTPServerException) from /usr/lib/ruby/gems/1.8/gems/chef-0.9.14/bin/../lib/chef/rest.rb:234:in `api_request' from /usr/lib/ruby/gems/1.8/gems/chef-0.9.14/bin/../lib/chef/rest.rb:285:in `retriable_rest_request' from […]
我正在使用chef-solo v10.12.0来configuration一个Ubuntu 12.04虚拟机,并且在configuration文件发生更改时,我仍然遇到服务无法重新启动或重新加载的问题。 日志中没有任何错误,尽pipe它明显在配方中做其他事情。 作为一种解决方法,我已经手动重新启动服务,或者每次执行配方时强制重新加载/重新启动,但是我更愿意弄清楚发生了什么问题,并按预期工作。 一个例子配方,一贯无法按预期工作: package "pgbouncer" cookbook_file "/etc/default/pgbouncer" do source "pgbouncer/pgbouncer" owner "root" group "root" mode 0644 end service "pgbouncer" do supports :start => true, :stop => true, :restart => true, :reload => true, :status => true action [:enable, :start] end cookbook_file "/etc/pgbouncer/userlist.txt" do source "pgbouncer/userlist.txt" owner "postgres" group "postgres" mode 0640 notifies […]
所以我有一套食谱/angular色,configuration为与stream浪汉一起工作。 我现在正在部署一个应用程序,我想用我的服务器上的厨师独奏来运行这些相同的食谱。 所以我只是简单的安装了chef-solo(与vagrant使用的版本相同),并试图调用下面的命令: sudo chef-solo -c solo.rb -j roles/clusterflunk_dev.json 不幸的是,产生了以下错误: [Fri, 27 Jul 2012 08:20:28 +0100] INFO: *** Chef 0.10.8 *** [Fri, 27 Jul 2012 08:20:29 +0100] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out [Fri, 27 Jul 2012 08:20:29 +0100] FATAL: NoMethodError: undefined method `delete' for # <Chef::Role:0x7f6848a05638> 我不确定相同版本的厨师会产生不同的结果,我显然在某个地方犯了一个错误。 我正在使用Ubuntu Server 10.10。
在下面的代码中,我创build了一个服务,我希望在部署它所依赖的文件之后才能启动,并在这些文件发生更改时重新启动它。 这个非常基本的配方不能像我所期望的那样工作: supervisor_service "test-service" do command "/bin/cat" autostart false action :enable end cookbook_file "/tmp/test.txt" do source "test.txt" notifies :restart, 'supervisor_service[test-service]' end 在运行结束时,厨师客户端只logging: supervisor_service [test-service]动作重启(最新) …服务不运行。 手动sudo supervisorctl restart test-service工作正常。 就我而言,重新启动操作是资源更改状态的请求(启用 – >启动),向厨师expression这一点的正确方法是什么? 编辑 :我认为这将是值得添加使用:立即修饰符导致行动正确执行。 然而,在实践中,我有多个文件,可能会触发重新启动,我需要所有这些在重新启动之前更新(完全是行为:延迟是为了提供)。