我正在玩Amazon EC2创build实例。 我正在读这里: 在这里EC2的刀具文件 ,我需要设置: # EC2: knife[:aws_access_key_id] = "Your AWS Access Key" knife[:aws_secret_access_key] = "Your AWS Secret Access Key" 现在,当我尝试从我的knife.rb中的AWS控制台设置安全证书时,我得到了一个 ERROR: You did not provide a valid 'AWS SSH Key Id' value. 而且,当我创build一个新的“密钥对”时,我会得到一些.pem文件,这也使我感到困惑。 我如何设置我的刀和EC2创build一个新的节点?
我有一个用例,我的大多数remote_file资源和yum资源直接从内部服务器下载文件。 但是,需要使用位于防火墙之外的remote_file下载一个或两个文件,这些文件必须通过HTTP代理。 如果我在/etc/chef/client.rb中设置了http_proxy设置,它将不利地影响配方从内部资源下载yum和其他文件的能力。 有没有办法让remote_file资源通过代理下载远程URL,而无需在/etc/chef/client.rb中设置http_proxy值? 在我的示例代码中,我正在从rubyforge.org下载一个redmine bundle,这需要我的服务器通过公司代理。 我在remote_file资源的前后创build了一个ruby_block,它设置了http_proxy并将其“解除”。 我正在寻找一个更干净的方式来做到这一点。 ruby_block "setenv-http_proxy" do block do Chef::Config.http_proxy = node['redmine']['http_proxy'] ENV['http_proxy'] = node['redmine']['http_proxy'] ENV['HTTP_PROXY'] = node['redmine']['http_proxy'] end action node['redmine']['rubyforge_use_proxy'] ? :create : :nothing notifies :create_if_missing, "remote_file[redmine-bundle.zip]", :immediately end remote_file "redmine-bundle.zip" do path "#{Dir.tmpdir}/redmine-#{attrs['version']}-bundle.zip" source attrs['download_url'] mode "0644" action :create_if_missing notifies :decompress, "zipp[redmine-bundle.zip]", :immediately notifies :create, "ruby_block[unsetenv-http_proxy]", :immediately end ruby_block […]
我有一个自我主持的厨师服务器。 我可以knife upload到该服务器,否则与之交互。 因此,我的knife.rb工作正常。 我最近参考了一本食谱,以使其成为一个相关的食谱家庭的基础。 问题是我想这个食谱是私人的,所以它只存在于我的私人厨师服务器上。 不幸的是,我不能在我的其他食谱上berks install 。 我在厨师服务器上指出了我的Berksfile : source https://chef.myhost.com 这不起作用。 我认为这是因为该URL是厨师pipe理,而不是厨师服务器API。 但是,我不知道如何让Berkshelf识别我的厨师服务器并使用它的API。 完整的错误: > berks install Resolving cookbook dependencies… Fetching 'blog_role' from source at . Fetching cookbook index from chef.myhost.com… Error retrieving universe from source: chef.myhost.com * [Berkshelf::APIClient::BadResponse] bad response #<Faraday::Response:0x36ae618 @on_complete_callbacks=[], @env=#<Faraday::Env @method=:get @body="<html><body>You are being <a href=\"chef.myhost.com:443/signup\">redirected</a>.</body></html>" @url=#<URI::HTTPS:0x36891f0 URL:chef.myhost.com/universe> […]
我有一个厨师系统,我们有多个环境,并在环境JSON中设置属性。 我无法从cookbook属性文件和食谱中访问这些菜单。
概要: 我遇到了一个问题:“刀子数据包来自文件”,刀不能识别从远程git仓库中取出的.json数据包文件。 背景: 我目前正尝试从厨师独奏使用过渡到厨师服务器,同时使用远程git仓库中的食谱,数据包和其他厨师信息。 我目前已经拉下了我们的git repo的副本,并在knife.rb中设置了cookbookpath和数据包path。 我也装了食谱,做了调整等等 细节: 当试图加载我们的.json数据包时,通过执行“从FOLDER FILE文件添加刀子数据包”,它看起来像它的工作,直到我做“刀数据包列表”,它出现空白。 所以我决定尝试在最后添加编辑选项来查看正在加载的内容,如果是的话。 这是我得到的错误: knife data bag from file local_settings test.json -e nano ERROR: Could not find or open file 'test.json' in current directory or in 'data_bags/local_settings/test.json' 数据包文件确实存在于正确的位置,在一个经过testing的工作json文件中。 我有时也得到一个错误,说“无法打开数据包”local_settings“。 我显然希望将数据包path保存在适当的git repo文件夹中,以便能够跟踪更集中的位置(我们的git repo,而不是厨师服务器)中的更改。 任何解决scheme,build议或指针在正确的方向表示赞赏。
我正在写一个厨师食谱来安装nginx和Phusion Passenger等。 简短的总结是,我的运行列表上的食谱没有按照我预期的顺序执行,这导致apt套件安装失败,我不知道如何解决。 整个序列有点复杂,我会尽我所能保持基本的细节。 我有我自己的配方, lr-web用于定制Web服务器到我想要的状态。其中一个动作是对nginx.conf进行更改。 我还有一个angular色来编排总体configuration,其运行列表是: "run_list":[ "recipe[apt]", "recipe[nginx]", "recipe[passenger]", "recipe[lr-web]" ] 而且, lr-web配方在其metadata.rb列出了passenger和nginx作为依赖关系。 apt和nginx食谱是标准的OpsCode。 但是我写了自己的passenger配方,因为OpsCode使用rubygems来安装乘客,但是这个版本不再支持。 遵循modrails.com的build议,通过apt来安装,我的passenger食谱中有以下步骤: cookbook_file "/etc/apt/sources.list.d/passenger.list" do source "passenger.list" mode 600 action :create_if_missing end bash "apt-get-update" do user "root" code <<-EOF apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 561F9B9CAC40B2F7 apt-get install apt-transport-https ca-certificates apt-get update EOF end apt_package "nginx-extras" do action :install end […]
我的服务器存在于没有外部networking连接的环境中(这是必需的),所以当我部署更新时,所有包,二进制文件,configuration文件等都必须包含在交付的介质上。 当然,我想要一些configurationpipe理,所以我可以告诉什么已经和没有安装。 所以我想知道,如果人们有厨师,傀儡或其他configurationpipe理types的工具来处理这种types的环境的经验。 最糟糕的情况是我将我的更新部署为RPM。 编辑: 我的设置有Linux服务器和Windows服务器。
我负责devise和实施configurationpipe理(Chef),将生产服务器完全分割并隔离在跳转框后面的基础架构中。 ——————————— | Production | Staging, Test, Dev | ——————————— 将文件投入生产的唯一方法是使用sftp连接。 只有两个人有能力直接投入生产。 一个例外可以使一个严格控制的自动化系统(如jenkins)将文件复制到生产环境中。 通常,我会build议在云中设置一个厨师服务器,但生产服务器不能有外部访问。 (没有一些非常不情愿的人的很多说服力)。 我看到的一个解决scheme是使用两个Chef服务器 ————————————— | chef-production | chef-local | | Production | Staging, Test, Dev | ————————————— 使用两个厨师服务器有一些问题,我不知道如何克服。 我怎样才能保持生产和本地服务器食谱同步? 我们怎么能把新的生产节点添加到生产厨师服务器上,而不需要pipe理员之一来运行knife命令呢? 我们怎样才能改变生产中的数据包呢? 我接受其他build议。 我正考虑不使用厨师服务器,而是使用chef-zero或chef-solo 。 我的理解是,这不是使用多个环境时的最佳解决scheme。
我正在工作的公司正在向AWS迁移,所以我有机会开始调查他们提供的各种服务。 OpsWorks看起来非常适合推出大规模架构变化,但“自定义”层包含13个无法删除的配方。 他们似乎做各种不同的事情,包括挂载/ var / www / html的驱动器 有没有人知道我在哪里可以find一些关于默认的OptsWorks脚本正在做什么的文档,更重要的是他们为什么要这样做? 我明显可以通过厨师的脚本做好准备,但对于他们来说,就像读取乱码一样,他们是新手。
例如,您可以使用AWS CloudFormation(与Chef服务器)部署由Web服务器,ELB和数据库组成的Auto Scaling组: http : //aws.amazon.com/cloudformation/aws-cloudformation-templates/ 但是,您最初需要创build一个CF模板,是否可以只使用Chef Server和Knife? 我们不希望太依赖CloudFormation,似乎( http://www.opscode.com/ )上的主办Chef服务器能够这样做。 任何开源的替代? 谢谢。