max*_*igs 8 chef-infra vagrant knife chef-solo
离厨师一段时间后,我正在回到它,以满足我所有的服务器需求.几年前我已经使用它了一段时间并且喜欢它,但最近有其他人做了操作部分.
但我仍然在努力寻找一个非常好的起始设置(本地Vagrant + Chef)来配合开发.单独使用Vagrant是一件轻而易举的事情,使用起来非常简单,并且可以相当快速地开发服务器设置.但是一旦我不得不离开Vagrant进行实际部署,它就会再次变得烦人.我总是不能使用Vagrant盒子,但Rackspace甚至是某个地方的实际硬件盒子.
现在我这样做:
针对Vagrant进行开发,尝试尽可能少地在Vagrantfile中进行实际配置
暂存并实际部署服务器:
使用Rackspace Cloud(至少升级)与Knife Solo
这已经不是那么糟糕了,但仍然有一些有时非常烦人的故障:
除此之外,我不得不遗憾地发现,厨师食谱已广泛发展成为一个不相容和自以为是的文物的丛林.有时甚至很难通过默认配方工作来获得基本设置.我很惊讶很多基础知识几乎没有涉及:
让sshd + iptables的组合工作花了我一天的研究,然后仍然修改默认模板让它工作 - 而我期望它几乎是任何服务器的起点.此外,似乎没有任何默认的厨师 - 用户工作流程.到目前为止我发现的所有内容都以root身份运行或需要进行相当多的修改.最后但并非最不重要的是,厨师(在ubuntu 12.04上)仍然使用ruby 1.8.7,它在短短几个月内即将达到终点.
可能是因为我没有找到合适的资源来涵盖我目前仍在努力或满意的所有要点,但似乎还有很多方法可以改进它.
那么,流浪汉+厨师如何在真实环境中工作(除了本地虚拟盒子之外)对你有用,还有哪些陷阱需要注意?
似乎它开始疯狂地通过本地流动的所有自动引导,但是一旦你超越了那些东西变得非常混乱.如果人们也使用这样的设置可以给我一些如何解决上述问题的指示,我会很高兴.我不介意付出一些努力让它全部按照我的预期运行,但也许我已经走错了部分,只是让自己更难以实际需要;)
目前简短的总结是:Vagrand + ChefSolo(KnifeSolo)非常棒,但为了正常工作,整个引导部分需要我们在应用烹饪书之前使用自定义的部分来获得适当的系统基础 - 这些都需要谨慎从丛林中挑选出来.
Progess/Update Notes
(*1):只是想出来,纯粹靠运气给它一个镜头,显然可以在一个Vagrantfile中添加多个提供机制:
config.vm.provision :shell, path: 'bootstrap.ubuntu-12.04.2-server-amd64.sh'
config.vm.provision :chef_solo do |chef|
...
end
Run Code Online (Sandbox Code Playgroud)
由于首先执行shell,我可以将它用作Vagrant服务器的自定义预处理,同时仍然使用Chef-Solo进行实际安装.好极了.仍然需要看看它最终会有多大用处,但现在有一点缺失的步骤可以让流程保持一致.
您甚至可以执行一种供应机制的多个实例。
我在笔记本电脑上运行鱿鱼代理,因此我的标准 Vagrantfile 包括一个在 /etc/profile.d/proxy.sh 中设置指向我的鱿鱼的全局 http 代理的 shell 提供程序,以及复制 CentOS 存储库的另一个 shell 提供程序文件到使用特定镜像的虚拟机中,而不是使用最快的镜像,以便最大限度地减少缓存未命中。运行之后,Vagrantfile 中有一个 Chef 提供者实际配置虚拟机。