Vagrant和Knife Solo(或任何其他非流浪厨师环境)最常见的工作流程?

时间:2013-04-03 07:23:52

标签: chef vagrant knife chef-solo

离开Chef一段时间后,我正在回到它,以满足我所有的服务器需求。几年前我已经使用它了一段时间并且喜欢它,但最近有其他人做了操作部分。

但是我仍然在努力寻找一个非常好的起始设置(本地Vagrant + Chef)来配合开发。 单独使用Vagrant是一件轻而易举的事情,使用起来非常简单,并且可以相当快速地开发服务器设置。但是一旦我不得不离开Vagrant进行实际部署,它就会再次变得烦人。我总是不能使用Vagrant盒子,但有时甚至是Rackspace甚至是某个实际的硬件盒。

现在我这样做:

针对Vagrant进行开发,试图在Vagrantfile中尽可能少地使用实际配置

  • 主要使用角色,使用我常用环境的预定义默认属性
  • 仅在Vagrantfile中指定节点特定属性
  • 在两个步骤之间直接从VirtualBox手动快照运行vagrant配置,以避免一直从头开始重建

暂存并实际部署服务器:

使用Rackspace Cloud(至少升级)与Knife Solo

  • 从Web界面创建Rackspace服务器,通过(roo @ ip with password)为所有服务器提供一致的首次配置步骤
  • 将public-key auth添加到服务器,以便不再需要pw
  • 为新服务器添加本地节点配置,复制Vagrantfile中定义的内容
  • 使用刀独奏准备+引导服务器

这已经不是那么糟糕但仍有一些故障,有时候很烦人:

  • 来自VirtualBox for Vagrant的手动快照(我还没有找到任何可用的插件)
  • 节点配置和Vagrantfile之间的冗余(可能让Vagrantfile解析节点配置并使用那些值)
  • Vagrant和Knife Solo之间的不一致引导(如果我弄清楚如何将它添加到Vagrant(* 1),可能会使用两者的通用脚本)

除此之外,我不得不遗憾地发现厨师食谱已广泛发展成为一个不相容和自以为是的文物的丛林。有时甚至很难通过默认配方工作来获得基本设置。我很惊讶很多基础知识很难被覆盖:

让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

由于首先执行shell,我可以将它用作Vagrant服务器的自定义预处理,同时仍然使用Chef-Solo进行实际安装。好极了。 仍然需要看看它最终会有多大用处,但现在有一点缺失的步骤可以使这些过程保持一致。

1 个答案:

答案 0 :(得分:1)

您甚至可以执行多个提供机制的实例。

我在笔记本电脑上运行了一个squid代理,所以我的标准Vagrantfile包含一个shell提供程序,它在/etc/profile.d/proxy.sh中设置一个指向我的squid的全局http代理,另一个shell提供程序复制一个CentOS repo文件进入使用特定镜像而不是使用最快镜像的vm,这样我就可以最大限度地减少缓存未命中。运行之后,Vagrantfile中有一个实际配置VM的主厨提供程序。