Articles of 厨师

如何覆盖一些厨师包的资源属性,而不需要定义所有其他的属性?

我使用Chef在我的节点中安装RHEL 5.x软件包。 我当然使用包资源,就像这样 package 'jdk' 正如你所想象的,我在很多食谱中都有大量的资源调用。 根据Chef软件包文档 ,资源具有retries和retry_delay属性,默认值分别为0和2secs。 现在我想改变这个行为,所以重试12,retry_delay是5秒。 现在我知道我可以做到这一点 package 'jdk' do retries 12 retry_delay 5 end 但是,我必须在所有包资源调用中这样做。 就像我说的我有很多,所以我不一定要这样做。 我已经开始编写一个custom_resource ,并且称mycompany_package可以在mycompany_package / resource / default.rb文件中执行此操作。 # Package name property :name, String, required: true, name_property: true # Retries property :retries, Integer, required: false, default: 12 # Delay between retries property :retry_delay, Integer, required: false, default: […]

厨师客户使用本地caching吗? 如果是的话,我可以清除它吗?

这可能是一个愚蠢的问题。 我对厨师了解不多。 我在一个节点上使用厨师11.8.2。 我有一个奇怪的问题 ,可能是由厨师客户端caching的东西,而不是从厨师服务器下载造成的。 厨师做这个吗? 在本地caching东西? 如果是这样,是否有可能在运行chef-client之前清除厨师节点上的本地caching,以便我可以确定我的问题不是来自caching?

在运行时在控制台显示厨师执行的输出

我在厨师食谱中有以下片段: chef::Log.info("Installing pips using requirements file: #{requirements_file}") execute "pip install -E #{ve.path} -r #{requirements_file}" do user deploy_user cwd deploy_path end 这安装了一些包,我想看到“pip安装”的输出作为厨师客户端正在工作,当我通过SSH调用它。 有什么办法可以logging执行命令的输出,以便写入日志为PIP正在运行?

Net :: SSH :: AuthenticationFailed使用厨师的刀ssh

事实: 我有一个厨师服务器安装。 我已经注册了一个节点到这个服务器,我可以看到在webUI中的节点(这是一个现有的节点,不是使用刀引导启动 当我执行命令 $ knife ssh "role:test" "sudo chef-client" WARNING: Failed to connect to node[ip-XXXX.ec2.internal] — Net::SSH::AuthenticationFailed: [email protected] 有什么我错过了吗? 例如复制SSH密钥?

为RHEL 6 / CentOS打包自定义主厨服务器(通过Chef solo)

我目前正在根据http://wiki.opscode.com/display/chef/Installing+Chef+Server+using+Chef+Solo为CentOS 6.2安装Chef服务器。 我想将所有东西都打包成自己的定制RPM,但是我想知道包装它的最好方法是什么。 (我知道有rpms已经可用,但我想用我自己的版本)。 我正在考虑将所有包括二进制文件和configuration文件在内的所有内容存储到RPM中,并将其存储在我的YUM仓库中,并将其作为我的kickstart服务器中的默认软件包。 我想知道是否有一个更好的方式通过混帐自动化,或者我应该坚持文件/ rpm?

厨师部署新服务器的最自动化方式是什么?

我们使用knife-vsphere在我们的虚拟环境中部署和configuration新的由厨师pipe理的服务器,但没有任何物理服务器的单步解决scheme。 目前,该stream程涉及到将基本操作系统映像到服务器上,手动configuration主机名和networking,从包中安装Chef,然后让Chef客户端执行configuration和程序包安装的其余部分。 是否有任何基于厨师的工具来安装整个操作系统,或物理驱动器的映像? 或者是在新安装的服务器上进行configuration的第一步的厨师工具,例如主机名和其他厨师客户端识别信息。

厨师节点是否需要公共IP?

我正在看厨师作为一个项目的可能的解决scheme,我还不熟悉它的架构。 我想到的第一个问题是:每个节点都需要一个公有IP吗? 我希望能够pipe理大量的节点,每个节点都在不同的networking中,我不能访问它们。 当然,我会在当地的networking中引导它们,但是之后我会将它们安装在不同的物理位置/networking中。 厨师服务器是否仍然能够融合他们后,他们插入一个新的networking与私人地址?

将一个条件应用到一组厨师资源更简单的方法

在这个厨师食谱的部分,有4个execute资源。 他们应该只在文件不存在时运行。 这是作为条件添加到第一个资源,然后触发整个链运行。 # Set up default SSL cert execute "defaultcert1" do not_if {File.exist?("/vol/webserver/cert")} command "mkdir /vol/webserver/cert" notifies :run, "execute[defaultcert2]", :immediately end execute "defaultcert2" do action :nothing command "ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /vol/webserver/cert/server.crt" notifies :run, "execute[defaultcert3]", :immediately end execute "defaultcert3" do action :nothing command "ln -s /etc/ssl/private/ssl-cert-snakeoil.key /vol/webserver/cert/server.key" notifies :run, "execute[defaultcert4]", :immediately end execute "defaultcert4" do […]

大厨Java Cookbook – JDK升级

我正在testing大厨Java Cookbook,将我们的JDK安装带到Chefpipe理之下,我想知道如何使用Chef Java食谱来升级JDK。 背景 为了指定要使用哪种Java,以及版本,我已经编写了一个包装器食谱,我们称之为“java包装器”,并提供属性以指定哪个JDK以及从哪里下载。 所以,在“java-wrapper / attributes / default.rb”我们有 node.normal["java"]["jdk_version"] = "7" node.normal["java"]["install_flavor"] = "oracle" node.normal['java']['jdk']['7']['x86_64']['url'] = "http://localmirror/jdk-7u21-linux-x64.tar.gz" node.normal['java']['jdk']['7']['x86_64']['checksum'] = "thechecksum" 然后成功安装JDK 7更新21。 问题 如果我然后更新上述属性以使用JDK 7 update 25,那么在Chef运行后节点属性会得到更新,但是Chef Java Cookbook不会“注意到”这个,而旧的JDK仍然存在。 其他人如何通过厨师pipe理JDK并推送更新? 我正在考虑的另一种方法是创build一个RPM(我们在RHEL上),只需使用一个包资源:升级操作。 谢谢, 弗雷德。

Opsworks自定义层部署

我正尝试在AWS Opsworks中使用自定义图层来添加nginxnetworking服务器。 我已经成功创build了图层,我通过GIT(回购没有密码)添加了我的应用程序,但是当我部署命令是“成功的”,但是在我的服务器上没有看到我的任何代码。 在自定义层中,唯一的部署configuration是“deploy :: default”。 我是否需要自定义配方来处理部署? 这是通过定制食谱(如果是这样,有人可以帮我一个例子) 另外,如何configuration部署的“哪里”? 我宁愿select我的文档根目录,而不是使用Opsworks的其他位置总是部署到的位置。 感谢您的任何帮助。