Articles of 厨师

有没有简化的方法来从现有的CentOS 5.10服务器导出本地Vagrantconfiguration设置? (木偶,厨师,贝壳等)

我最近开始学习如何使用Vagrant来build立本地开发环境。 (对各种WAMP堆栈选项感到沮丧之后)stream浪者迄今为止是非常棒的…轻微的(ha)学习曲线,但长期看起来很有希望。 完成了试图让我的虚拟机看起来像我的在线服务器的乏味过程…在我看来,有一个失踪的stream浪者片。 现在的过程似乎或多或less像手动试错。 不是第一次快速build立或保持与上游服务器轻松同步的理想select。 诚然,我可能不知道我正在寻找什么…因此,这个问题。 有没有一种简化的方法来从现有的CentOS 5.10服务器导出本地Vagrantconfiguration设置? (木偶,厨师,贝壳等) 像这样的东西是我想象的… (连接到在线服务器…) 检测回购差异,并根据需要启用,禁用,添加本地。 检测软件包,并同步本地进行匹配。 (从本地安装或删除) 获取httpd.conf,调整本地(如果需要),并同步。 获取php.ini,调整本地(如果需要),并同步。 获取MySQL设置,调整本地(如果需要),并同步。 获取时区和同步。 [你的build议,应该同步更多的东西在这里欢迎…] 理想情况下,这将在configuration期间运行,基本保持本地版本与在线版本同步。 这将消除需要不断调整您的本地设置手动保持同步。 如果在线(主机或内部)发生了变化,它会自动传播。 (当然,理想情况下,您可以标记设置来调整行为以满足您的需求) 另外,我想如果我能打包在线服务器,而不打包各种用户特定的数据,那也可以。 然而,从我所能说的看来,这似乎是不可能的,而且肯定不会很有效。 警告 在我个人的情况下,我在一个CentOS 5.10服务器与cPanel。 cPanel似乎做了很多东西,服务器端并不一定立即显而易见。 一个例子是许多包名称以cPanel开头,似乎是专有的,但同时与我可能想要同步的东西有关。 (如cPanel-php53)据我所知,这些不能轻易同步…因此,需要将变通方法置于适当的位置。 另一个例子可能是不同于预期的path,但我不太清楚,因为我对CentOS和cPanel默认安装不够熟悉,以确定任何特质。 我到目前为止所做的… 在做决定之前,我做了一些事情,是否有更好的方法与Vagrant更加配合。 这不是可怕的,但不是真正的“简化”或全面。 这里是细节… 我学会了如何在两台机器上运行yum repolist all ,以及如何使用cd /etc/yum.repos.d; ll;在文件系统中查看repos cd /etc/yum.repos.d; ll; cd /etc/yum.repos.d; ll; ,而不是如何使用这个信息自动同步回购。 我写了一个shell脚本来让本地的包非常接近远程的包。 然而,虽然它做得很公平,但并不完美,我想知道有没有更好的办法。 问题… 我不确定是否允许删除本地特有的软件包。 (也会抛出一些错误) 我还没有整理如何弥补包装“cPanel”似乎是我真正想要(PHP,MySQL等)的替代品,而不是完全从安装列表中删除每个包。 […]

厨师 – 没有密码的SSH

执行时: knife bootstrap {{IP}} –ssh-user centos –ssh-password '' \ –sudo –use-sudo-password –node-name node1 \ –run-list 'recipe[learn_chef_httpd]' 我收到以下错误: ERROR: Net::SSH::AuthenticationFailed: Authentication failed for user centos@{{IP}}@{{IP}} 我试图连接到没有密码的centos用户,因为我想使用SSH-Key Auth。 我曾尝试通过一些排列组合: knife bootstrap {{IP}} -x centos -i .chef/james-chef-validator.pem –sudo –run-list 'recipe[learn_chef_httpd]' 一切都没有成功… 如果运行-VV: … DEBUG: allowed methods: publickey,gssapi-keyex,gssapi-with-mic DEBUG: none failed DEBUG: trying publickey DEBUG: connecting to ssh-agent ERROR: […]

如何检查厨师数据库是否存在?

我想检查是否有奴隶数据包。 如果有一个,并且它包含数据,那么我想为每个从机执行一个动作。 我有以下代码: slaves = data_bag('slaves') if slaves.length > 0 for slave in slaves …xyz.. end end 这工作,除非数据标签还不存在。 如何检查数据库是否存在? 还是我这样做完全错了?

将variables传递给厨师模板的正确方法是哪种方法?

看看这个官方文档: https : //docs.chef.io/resource_template.html我看到传递给模板资源的variables的例子,使用“{”,“({”或“(”来范围variables。 我找不到解释差异的地方,或者为什么我会用另一种forms。 运行配方时真的有实际的区别吗? 例1: template '/tmp/config.conf' do source 'config.conf.erb' variables( :config_var => node['configs']['config_var'] ) end 例2: template '/tmp/config.conf' do source 'config.conf.erb' variables{ :config_var => node['configs']['config_var'] } end 例3: template '/tmp/config.conf' do source 'config.conf.erb' variables({ :config_var => node['configs']['config_var'] }) end

与Chef Solo一起运行`apt-get upgrade`

我正在使用Chef Solo为Ubuntu 12.04提供一个基于Opscode的“Bento”盒子的Vagrant虚拟机。 当它完成configuration和我第一次SSH时,MOTD告诉我有包和安全更新。 然后,我手动运行sudo apt-get upgrade ,这会删除后续login中的消息。 厨师有没有办法让这个步骤自动化? “易”食谱似乎并没有处理这一点。 我所有的Googlesearch都只能findapt-get update东西,而不是apt-get upgrade 。 我只能在Chef配方中执行apt-get命令,但在升级过程中,在粉红色屏幕上有一个伪GUI,我必须select驱动器进行安装(我认为这叫做GRUB,我是新的到Ubuntu),我不知道这部分如何自动与厨师。

如何删除厨师包?

我正尝试使用厨师去除包裹。 即删除Java 1.6并安装Java 1.4

如何用刀创build一个EC2实例?

我能够通过以下方式访问AWS: http : //www.agileweboperations.com/amazon-ec2-instances-with-opscode-chef-using-knife 现在,我得到一个刀子命令几乎工作: $ knife ec2 server create -r "role[base]" -I ami-c1aaabb5 -f t1.micro -S knife -i ~/.ssh/knife.pem –ssh-user ubuntu –region eu-west-1 -Z eu-west-1a 实例ID:i-xxxxxx 味道:m1.small 图片:ami-399ca94d 地区:欧洲西部1 可用区域:eu-west-1a 安全组:默认 标签:{“Name”=>“i-xxxxxx”} SSH密钥:刀 等待服务器………………………. 公共DNS名称:ec2-xxxxxx.eu-west-1.compute.amazonaws.com 公共IP地址:yy.yy.yy.yy 私人DNS名称:ip-xxxxxxx.eu-west-1.compute.internal 私人IP地址:zz.zz.zz.zz 等待sshd …………………………….. 但现在我得到一个超时。 任何想法/build议如何创build一个EC2实例准备厨师供应? 谢谢!

使用Chef SoloconfigurationWindows EC2实例并引导它

我试图自动化一些.NET应用程序的CI过程,在一个完美的世界中,我想为每个应用程序启动一个Windows EC2实例,引导实例来安装Chef Solo,然后执行Chef recipe安装一些依赖项和打包的软件本身。 但是 – 我是新手,即使这是可行的,也不知道从哪里开始:) 我对AWS的命令行工具非常熟悉,所以可以启动一个AMI,但超出这一点,我很困难。 我想避免与预先安装的厨师build立一个定制AMI,因为这需要很多优势。 我认为这实际上是我需要做的 – 但是(不出意外)把重点放在Linux上: http://www.opinionatedprogrammer.com/2011/06/chef-solo-tutorial-managing-a-single-server-with-chef/ 有没有人有链接到谁做过这样或类似的人之前? 或者更好地实现我想要做的事情? 任何帮助赞赏。

厨师:从其他食谱导入定义

基本上我已经写了几本食谱,目前它们都有相同的定义文件。 显然,这是一个糟糕的情况,因为这会增加新的烹饪书的难度,而改变这个定义文件需要改变其他三个或四个其他文件完全一样。 有没有办法,如果我有一个单独的食谱,谁的目的是基本上只包含该定义,我可以导入该定义文件到需要它的食谱?

如何使用当前的食谱模板目录,以循环的方式recursion复制所有模板与厨师

我试图找出如何构build模板(或文件,因为它的工作方式相同)文件夹的path,然后我可以读取它,并在循环中使用模板资源,所以每个模板文件可以触发通知变化。 我无法使用remote_directory,因为我只想在模板更改时通知服务。 我也想避免手动模板规范,因为这些目录中可能有很多文件。 另外,它可以让我们只改变模板文件夹中的configuration,而无需触摸配方。 主要的问题是像默认,主机,主机版本这些子目录和逻辑厨师通过确定正确的模板文件夹。 我在想,也许我可以从自定义食谱中调用一个厨师类的方法,以达到我的逻辑(循环)的起点。 应该是这样的我想: entry_point = CHEF::…getEntryPointDir entry_point.glob.. .each do template fname do … end end 我将不胜感激任何帮助!