我试图通过厨师食谱来运行apt-get dist-upgrade。 我知道,一般不build议在Cookbook中运行apt-get升级( https://stackoverflow.com/questions/15080876/apt-get-update-and-apt-get-upgrade-in-chef#15093460 ),但我们控制了我们的ubuntu镜像,任何软件包只有经过彻底的testing才能进入镜像,所以运行dist-upgrade很好。 我目前在我的食谱是 execute "apt update" do command "apt-get -y update" end execute "apt dist-upgrade" do command 'DEBIAN_FRONTEND=noninteractive apt-get -fuy -o Dpkg::Options::="–force-confdef" -o Dpkg::Options::="–force-confold" dist-upgrade' end execute "apt autoremove" do command "apt-get -y autoremove" end 看起来更像是一个shell脚本,而不是一个厨师菜谱。 添加apt cookbook将运行apt-get update但是我没有find更好的方法来进行apt-dist-upgrade。 即使这个https://supermarket.chef.io/cookbooks/apt-upgrade-once菜谱也是一样的。 如何通过厨师食谱更好地做到这一点? 我正在通过食谱寻找答案而不是通过cron / unattendedupgrades(因为我知道通过cron / unattendedupgrades做事)。 更新: apt更新可以更好地运行 apt_update 'update' do action […]
我一直试图设置一个厨师服务器,并提供与opscode github页面的食谱 http://github.com/opscode/cookbooks.git 我克隆了这个回购,并在我的服务器configuration和刀configuration server.rb cookbook_path ['/ opt / chef / cookbooks','/ opt / chef / site-cookbooks'] knife.rb cookbook_path ['/ opt / chef / cookbooks','/ opt / chef / site-cookbooks'] 这两个目录都包含回购的食谱,但是食谱可以在web-ui或者通过菜谱列表中看到。 我敢肯定,我有一切configuration正确的客户端可以连接和所有进程似乎正在运行(按照服务器的setp文档)。 任何人得到这个工作,并可以让我在正确的轨道上让我的食谱列出? RGDS, STE
是否有可能告诉tar解压档案,并设置uid / gid到一个特定的,当你作为根运行焦油(当使用厨师)? 我已经知道的事情: 我可以使用-o作为根,然后chown uid:gid –owner和–owner显然只在添加文件时才起作用,而不是在解包时起作用 能够在解包时指定所有者是非常方便的。 那可能吗 ?
我们正在考虑使用厨师来pipe理我们的应用服务器。 所以,我们正在创build食谱,根据需要在某些情况下为我们configuration资源。 但是如果执行失败会发生什么? 我们是否需要手动pipe理这种情况? 食谱失败的日志是否发布在集中监控的地方? 这种情况下是否有通用的解决scheme,如添加某种通知感兴趣方的失败处理程序? 更新:我们使用-d -i 60作为守护程序在服务器上运行chef-client
主厨节点的属性之一是散列数组: "array_of_hashes": [ { "hash_key_1": "value1", "hash_key2": "value2", }, { "hash_key_2": "value4", "hash_key_1": "value3", } ] 我需要遍历每个数组元素,并生成一个configuration文件,其中模板参数由散列值定义: # cat my_config.conf key1=value1; key2=value2 key1=value3; key2=value4 我无法使用模板资源来实现这个结果,因为它在每个循环迭代中都不支持configuration文件(不附加它),而我只得到最后一个string。 生成上述configuration文件的最好方法是什么?
在我看来,将客户添加到厨师服务器的推荐方式 – 或者我的理解 – 是有缺陷的。 从文档 : 当chef-client运行时,它会检查它是否有一个客户端密钥。 如果客户端密钥不存在,则它尝试“借用”validation客户端的身份以向服务器注册自己。 为了做到这一点,validation客户端的私钥需要被复制到主机上,并放置在/etc/chef/validation.pem中。 所以“validation码”基本上就是超级用户证书,任何拥有它的人都可以访问厨师服务器? 我正在读这个吗? 当然,正确的模式将是客户端生成自己的密钥对,并将公钥提交给厨师服务器。 客户不应该需要访问这个超级用户“validation密钥”。 我怎样才能做到这一点,更安全的方式呢?
是否有可能从刀命令(SSH)属性, 例如 knife ssh 'role:server' 'sudo chef-client' <– how to pass attributes to remote?
我正在基于示例模板的自定义引导程序模板。 我正在看从validation密钥从工作站到全新的服务器的例子,从我可以告诉的是在variablesvalidation_key中的knife.rb中指定的关键path。 并在引导模板中使用<%= validation_key%>进行回显 这个魔法是否是ruby的东西,是在knife中处理的validation_keypathvar,在处理模板时,内容被读入到一个不同的var中,那么path是如何变成包含该path上的文件内容的string? 如果我在knife.rb中声明foo = / tmp / test.txt,我可以通过使用<%= foo%>访问引导模板中的test.txt的内容吗? FROM: https : //github.com/opscode/chef/blob/master/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb ( cat <<'EOP' <%= validation_key %> EOP ) > /tmp/validation.pem
我有很多包和configuration来完成我的开发机器。 我的团队中有其他开发人员,希望他们有相同的设置,以确保工具的兼容性和可用性。 如何自动configuration其他开发机器? 我发现木偶和厨师做同样的多个服务器。 我会毫不犹豫地学习或使用它们,除非它们是为了我的使用案例的矫枉过正。 我也发现Remastersys用自定义的现场光盘重复我的安装,但我期待着: 在已安装的系统上运行我的设置。 是发行不可知的。 Remastersys似乎不适合。 那么,我应该看什么工具来完成它? 示例用例: 希望在全新安装Ubuntu或Arch之后安装x,y,z软件包。 我可以去发行不可知论? [给我的开发者select发行版 – 仍然保持相同的包,没有额外的努力。] configuration简单的服务器,如MySQL或PostgreSQL。 经常使用像Meld,Google Chrome,Firefox等工具 我的用例不是类似于服务器的用例。 我想要的是重复我的设置,让我从底层的系统细节解耦。 壳牌脚本可以是一个选项,但它真的很难像shell脚本那样维持如此低的水平。 我想这是一个普遍的问题来解决。 必须有我缺less的东西。
我试图用刀ec2服务器创build第一次自动启动ec2实例,但我得到"ERROR: Excon::Errors::BadRequest: Expected(200) <=> Actual(400 Bad Request)" 。 使用knife ec2 server list将返回现有服务器的列表,这意味着.chef/knife.rb中的AWS ID是正确的。 我使用Ubuntu的AMI Finder检查了AMI ID,并尝试了所有其他参数的不同组合,因此无法弄清楚什么是错误的。 我使用的是: knife ec2 server create \ -r "role[memcached]" -I ami-d0f89fb9 -f m1.small \ -i mysshkey.pem –ssh-user newuser \ –region us-east-1b -Z us-east-1b (有一个名为memcached的Chefangular色,本地目录中有一个名为mysshkey.pem的文件) 环境:Win7,Git 1.8.1.msysgit.1,厨师/刀11.4.4。 稍后我会尝试从Linux工作站执行相同的操作,以便能够确定问题是环境,参数还是AWS凭据。 任何想法如何解决刀ec2脚本?