我有一台主机,我刚刚从厨师11升级到厨师12,但是当我创build一个新的EC2节点时,它希望安装客户端11.18而不是12.01或12.03。 我不确定这是否导致客户端被炸死(命中403尝试在主服务器上创build客户端节点),但它不能帮助。 有谁知道在哪里可以告诉掌握什么版本的客户端安装?
我有一吨没有互联网的机器(〜100)。 我需要更新所有的powershell / .net。 他们都在同一个领域。 什么是最好的select? 我没有像这些机器上预先configuration的厨师或SCCM的东西。
我正在尝试为不同的环境构buildnginx文件。 我的食谱有这样的hashmap: domain = { production: { public: 'example.com', internal: 'example.dev' }, staging: { public: 'examplestage.com', internal: 'examplestage.dev' } } template '/etc/nginx/conf.d/example.conf' do source 'example.conf.erb' variables( :domain => domain, ) end 在我的模板中,我想要做这样的事情: … server <%= @domain[node.chef_environment][:public] %> <%= @domain[node.chef_environment][:public] %>; … 我试图得到这个评估是这样的,这取决于节点属于staging或production的环境: server example.com example.dev; 问题是, node.chef_environment部分不能被内插。 我如何解决这个问题?
我想创build一个只有在满足某些特定条件时才运行的执行块(在这种情况下,如果接口wlan0存在)。 或者,我想防止在相同的条件下模板的notifies子句。 我怎么能描述一个配方? 我当然可以把整个条件放在execute command ,但是我希望有一个更好的方法来实现这个…
当使用Vagrant(以及后来的Chef)时,我使用Zend Server CEconfiguration我的虚拟机,它会自动安装通常的* AMP堆栈。 我想通过PEAR安装一些包,“php”食谱已经有一个“pear”和“pear_channel”提供程序。 但是,通过调用require_recipe("php") , default.rb会自动运行,尝试重新安装PHP。 我只想利用less数提供者而不执行default.rb 。 有没有办法做到这一点?
我想在另一个配方中包含基于条件分支的配方。 目前计划在执行Ruby .each迭代器的过程中。 opscode维基说关于include_recipe的以下内容,“…对于相同配方的后续调用include_recipe将不起作用。” 我假设这意味着在运行过程中可能不会多次使用相同的配方使用include_recipe 。 但是,如果在迭代器的执行过程中被调用,这是否适用? 谢谢! 更新说明: 所以,只是为了澄清。 recipe_1是主要的食谱。 在recipe_1中,我遍历节点上的应用程序,如果App_3在节点上,则我想要包含recipe_2,如果Application_2在节点上或recipe_3。 如果我在节点上同时拥有两个应用程序,那么我想要确保当下一次迭代开始为App_3运行时,包含recipe_2的第一次迭代不会包含在recipe_1中。 再一次,我对提到的文档保持警惕:包含配方的资源将按顺序插入,在调用include_recipe的位置。
我试图为500-2000个非常地理分布的主机selectconfigurationpipe理系统。 由于不同的networking可靠性,可能会有多个主机在任何时候暂时不可用。 出于这个原因,我最初的select是厨师,因为它使用“拉”模式,当主机上网和登记时,他们会立即得到当前的configuration。 但是,如果我的主机只会每30分钟轮询一次Chef服务器的新configuration,则不可能进行快速部署。 另外,我不是Rubyist。 我宁愿使用基于推送的模型,我可以尽可能快地将configuration推送到主机。 所以,自然select似乎是Ansible或SaltStack(可能是SaltStack)。 但是我的问题是:Ansible和SaltStack如何处理失败或失败的主机? 有什么方法可以在主机重新联机之前一直保持重试吗? 是否存在用这些工具正确处理停机主机一致性的模式? 谢谢!
我喜欢看会议演示文稿,告诉你如何在服务器设置/部署等方面做些事情。 那里有好的吗? 越实际越好。
老版本的食谱安装了一个我不想在我的系统上使用的软件包。 我的理解是,厨师没有一个明确的方法来明确地删除一个包,所以我诉诸钝头锤execute : execute "Remove nasty perl gearman-server" do command "apt-get -y remove gearman-server" ignore_failure true end 但是这个失败了,我猜是因为厨师本身对dpkg有locking? STDERR: E: Could not get lock /var/lib/dpkg/lock – open (11: Resource temporarily unavailable) E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it? 我怎样才能以编程方式确保这个软件包不再在我的机器上? 如果不清楚的话,我完全乐于使用Ubuntu的解决scheme。
Chef,Puppet等是否能够指向现有的Linux服务器,并且消耗构build服务器操作系统/包版本/定制文件等所需要的“东西”的100%,包括构build顺序? (不要猜测,但是相信我去年听到的一个讲话让我相信了这一点。)