Questions tagged «chef»

Chef是用于基础结构自动化的开源配置管理框架。

2
Chef:为模板创建目录(如果尚不存在)
如果我正在创建模板,如何确保目录存在?例如: template "#{node[:app][:deploy_to]}/#{node[:app][:name]}/shared/config/database.yml" do source 'database.yml.erb' owner node[:user][:username] group node[:user][:username] mode 0644 variables({ :environment => node[:app][:environment], :adapter => node[:database][:adapter], :database => node[:database][:name], :username => node[:database][:username], :password => node[:database][:password], :host => node[:database][:host] }) end 由于/var/www/example/shared/config不存在database.yml要复制到的操作,因此失败。我在考虑p如何允许您“确保”目录存在。
17 chef  chef-solo 

7
在决定使用Chef或Puppet时,有哪些正确的问题要问?
我将开始一个新项目,该项目将部分需要部署大约三个不同类的许多相同节点: 数据节点,它将运行MongoDB的分片实例。 应用程序节点,它将运行Ruby on Rails应用程序和较旧的ASP.NET MVC应用程序的实例。 处理节点,它将运行应用程序节点请求的作业。 所有节点将在Ubuntu 10.04实例上运行,尽管它们将安装不同的软件包。 尽管我不认为自己是专家,但我对以前项目中的Chef有所了解。为了尽职调查,我一直在研究其他可能性。我们内部有很多人是Puppet的长期用户,所以他们鼓励我看看。 我在评估这两种选择时遇到了麻烦。Chef和Puppet共享许多相同的领域术语- 包,资源,属性等,它们有着共同的历史,源于对同一问题采用不同的方法。因此从某种意义上说它们非常相似。但是,像本文一样,我发现的许多比较信息都有些过时。 如果您今天开始这个项目,您会问自己哪些问题来决定应该使用Chef还是Puppet进行配置管理?(注:我不想要回答这个问题:“我应该用厨师或木偶?”)

2
如何开始使用Chef?
厨师文档非常糟糕。Google并没有帮助我。 谁能指出我的体面文章或可以帮助我入门的内容? 我的具体问题是: 如何让客户端读取我的配置?Chef-solo似乎是最好的开始(我不想运行OpenID服务器或Merb) 如何配置Apache服务于Django?我已经知道如何通过常规服务器配置来做到这一点,但是我认为一个示例Chef食谱将是一个好的开始。
15 ruby  chef 

4
在团队环境中管理厨师食谱
我正在学习厨师,在组织一切与团队合作方面遇到问题。 对于初学者来说,似乎应该创建一个Chef-repo文件夹,您将在其中存储和修改用于管理节点的食谱。 我从事各种项目,每个项目都已经在git源码控制下。理想情况下,我会在该项目的每个菜谱中都保留一个Chef-repo文件夹,对吗? 但是,在Chef-repo文件夹中,我必须添加一个配置文件夹(.chef),其中包含我的刀配置和我的密钥验证,这些是我特有的。仅将.chef文件夹添加到gitignore文件是否正常? 我了解这些菜谱已上传到厨师服务器,然后进行了部署。其他团队如何在不重复大量工作的情况下将阶段与生产环境分开?我们有一个master分支,这是我们的生产分支,一个dev分支,是我们的登台分支(接收不到网站请求的5%)和功能分支。大多数情况下,稳定时的dev分支会合并到master分支。我们如何分别上传食谱,以便能够以单独的方式拥有两个环境? 谢谢您的帮助!
13 chef 

2
在Chef中,如何访问角色文件中的属性?
我能够按照记录的那样在角色文件中设置属性,但是我无法访问我正在使用的食谱已经设置的属性。 例如在/roles/appserver.rb中: name "appserver" run_list(%w{ recipe[tomcat::default] }) default_attributes( :tomcat => { :java_options => "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=" + node[:tomcat][:log_dir] } ) 我得到的是一个异常,指出厨师无法找到“节点”方法/变量。 谢谢
13 chef 

2
如何在Ubuntu 12中的apt-get升级过程中自动执行更改的配置文件
我喜欢使用“ knife cloudstack server create ...”来构建新的VM。我的引导程序模板以“ apt-get更新”和“ apt-get -y升级”开始。 然后,升级将因以下原因而停止: 10.190.113.11 Configuration file `/etc/nscd.conf' 10.190.113.11 ==> Modified (by you or by a script) since installation. 10.190.113.11 ==> Package distributor has shipped an updated version. 10.190.113.11 What would you like to do about it ? Your options are: 10.190.113.11 Y or …
13 ubuntu-12.04  apt  chef 

5
刀SSH找不到我的节点
knife ssh没有找到我的节点。我知道应该可以,因为当我搜索它们时,我会找到它们 # knife search node name:* 2 items found Node Name: web_01 ... Node Name: admin ... 但是,当我运行knife ssh(我将使用“ debug”标志将其显示)时,我得到 # knife ssh "node:*" "uptime" -VV DEBUG: Using configuration from /root/.chef/knife.rb DEBUG: Signing the request as dev DEBUG: Sending HTTP Request via GET to ec2-xx-xx-xx-xx.compute-1.amazonaws.com:4000/search/node FATAL: No nodes returned …
12 chef  knife 

3
Ansible,Chef,Puppet或____:具有最强的Windows支持和最小的初始化占用空间
我们主要(但不是排他性地)赢服务器。 最好是,我们可以启动操作系统,而几乎不执行任何操作或不执行任何操作以使其准备好接收命令(我们知道我们可能需要在其上创建具有代理或ssh服务器的基础映像)。 需要能够安装mongodb,基于Java的应用程序,iis config等。 哪个工具具有最强的Windows支持/社区功能,以及(如果可能)最轻的初始化占用空间? 操作答案:Powershell DSC。 这不是完整的故事(它不能完成厨师/人偶/等等的全部工作),但是它可以满足很多需求,效果很好,并且在win 8.1 / 2012-R2 / 10中是开箱即用的。我们对此感到非常高兴。

2
厨师:如何仅在通知上运行资源?
我想声明一个我想在通知时仅在通知时运行多次的资源。声明资源后如何防止其自行运行? 有没有什么方法可以检查是否存在通知,所以我可以运行“ only_if:notified”之类的东西?
11 chef 

1
食谱之间共享的文件/模板
我们有多个参考相同文件和模板的食谱,并且想知道是否存在合理的方法来确保所有文件和模板都相同,以确保所有文件都不会过时。是否可以有多个配方/食谱参考的单个文件/模板?我考虑过使用符号链接,但是这对我们不起作用,因为Git不支持它们。
11 automation  chef 

3
Chef bash资源未以指定用户身份执行
我正在写厨师食谱来安装Hubot。在食谱中,我执行以下操作: bash "install hubot" do user hubot_user group hubot_group cwd install_dir code <<-EOH wget https://github.com/downloads/github/hubot/hubot-#{node['hubot']['version']}.tar.gz && \ tar xzvf hubot-#{node['hubot']['version']}.tar.gz && \ cd hubot && \ npm install EOH end 但是,当我尝试在安装本食谱的服务器上运行Chef-client时,我获得了拒绝写入运行Chef-client用户(而不是hubot用户)用户目录的权限。由于某种原因,npm试图在错误的用户下运行,而不是在bash资源中指定的用户下运行。 我能够sudo su - hubot -c "npm install /usr/local/hubot/hubot"手动运行,这会得到我想要的结果(以hubot用户身份安装hubot)。但是,chef-client似乎没有以hubot用户身份执行命令。在下面,您将找到Chef-Client执行。先感谢您。 Saving to: `hubot-2.1.0.tar.gz' 0K ...... 100% 563K=0.01s 2012-01-23 12:32:55 (563 KB/s) …
11 node.js  chef 

2
Chef-solo vs Chef-client-本地模式
据我应更换文件chef-solo通过chef-client --local-mode。 在11.8版本中,本地模式已添加到Chef-client。如果您正在运行该版本的chef-client(或更高版本),则应考虑使用本地模式而不是chef-solo。 https://docs.getchef.com/ctl_chef_solo.html 我只是替换了命令,并且工作正常。这两个命令是否总是可以替换而无需重新配置?还是我应该知道一些细微的差别?
11 chef 

2
使厨师食谱版本受到控制的最佳策略
我正在寻找有关厨师食谱版本管理的想法。我知道您将特定版本固定在环境中,但是我不确定该怎么做。 我们使用图书馆管理员来将3rd party社区书籍安装到cookbooks文件夹中。我们从不碰那些书,而只是不时更新到最新版本。 我们还提供了针对特定地点的自定义菜谱,其中包括社区菜谱(include_recipe)。 从理论上讲,我们可以指定自定义书籍所依赖的社区书籍的特定版本,然后在环境配置中设置我们的食谱版本,但是问题在于,这些社区书籍可能依赖其他一些没有指定版本的书籍。这种深层嵌套的依赖性可能会持续下去。 因此,没有保证,当您将食谱上传到Chef服务器时,它不会中断生产,因为从属食谱也可能会发生变化。 我目前看到的唯一解决方案是指定我们在环境配置中使用的每个食谱版本,包括社区和自定义版本。但是然后我必须仔细阅读每本食谱,并找出那些版本。 我们还会不时地进行图书管理员检查更新,我想这可能会变得很难跟踪已更改的版本,并且不要忘记及时更新环境中的版本。 请分享您的经验和最佳做法。我相信这对其他人将非常有用。

1
3个节点群集的配置管理功能过大?
我的负载均衡器和各种Web应用程序有2-3个节点群集。我必须先在质量检查中进行更改,然后在暂存中(在2-3台服务器上)进行更改,然后在生产中(在2-3台服务器上)进行更改。这里是否适合使用诸如Chef或puppet之类的配置管理工具?还是过度杀伤力?如果这是过度杀伤力,那么有什么技巧可以使之更容易。

1
如何使用Chef确保服务正在运行?
我处在Chef可能启动服务(postgres)但后来可能带外停止的情况。我希望随后的Chef运行以使服务运行。我已经试过了: service "postgresql" do action :start end 但这没什么效果,(up to date)大概是因为Chef知道它已经启动并且无法告诉它已经停止了。(可能是由于service ... status该服务的行为方式?)如果我这样写: # anti-pattern warning! execute "force-start-postgresql" do command "service postgresql start || /etc/init.d/postgresql start" action :run end 我得到了期望的行为。也action :restart使其运行。但是,由于可移植性,它们看起来像是反模式(在后一种情况下,有可能在再次启动之前将其停止)。 那么,即使我认为该服务已经在运行,我如何告诉Chef强行启动该服务呢? 这使用的是由OpsCode托管的Chef 11.6,以及默认的postgresql配方。(请注意,这是相似的,但我认为与如何在Chef中对“最新”资源强制执行操作并不完全相同。) --- 编辑(jtimberland发布后的说明)--- 在-l debug这里显示: DEBUG: service[postgresql] supports status, running DEBUG: service[postgresql] is running 即使它没有运行。所以这听起来像是一个错误,我对此很感兴趣。但是,我主要对是否有一种方法告诉Chef“总是调用服务启动命令,跳过状态检查”感兴趣。这就是这里的问题。 (我不是专家,但我想,以确保服务的最简便的方式在运行时启动该服务,这就是几乎总是幂等。OTOH 检查服务是否正在运行是不太一致,我不明白为什么我们要关心!)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.