繁体   English   中英

打包Chef环境并在单独的配置服务器上运行

[英]Package a chef environment and run on a separate provisioning server

为了建立一个运行我们的软件解决方案的环境,我们制作了一些食谱。 这些食谱位于两个git服务器上,并依赖于公共食谱(我们使用的是berkshelf)。

我们需要将软件解决方案配置到不同的客户端环境(它们的硬件)中,为了做到这一点,我们希望能够在我们的开发计算机上创建所有软件包,并将该软件包上传到客户端中的配置计算机环境。 然后,我们想使用该配置机器为该客户端设置所有内容。

我们需要这样做的原因是,客户端环境中的供应机将无法访问存储我们的食谱的git服务器。 它甚至可能无法上网。 我们基本上希望将客户环境视为一个完全孤立的孤岛。

我希望能够将整个环境(包括依赖项)打包并上传到预配置服务器上。 然后,我将在此处启动零厨师,并从中调配该环境的所有节点。

问题是,我真的不知道如何实现这一目标。

看看spiceweasel( https://github.com/mattray/spiceweasel

我最近没有使用过,但是这是在客户群集上安装时的策略(在use-ta-work-there)。

Berkshelf文档描述了如何将食谱打包到单个存档中:

 $ cd ~/code/berkshelf-api/cookbook $ berks package Cookbook(s) packaged to /Users/reset/code/berkshelf-api/cookbook/cookbooks-1397512169.tar.gz 

该归档文件可以直接提供给Chef-Solo,也可以提取并上传到Chef Server。

包装食谱

使用berkshelf打包“ myapp”食谱及其所有依赖项。

berks package myapp-1.0.tar.gz

用法:厨师独奏

tar zxf myapp-1.0.tar.gz
chef-solo -c ~/solo.rb -j ~/node.json

用法:厨师服务器

将食谱上传到厨师服务器

tar zxf myapp-1.0.tar.gz
knife environment create myapp-1_0 --description "myapp version 1.0" -d
knife cookbook upload --all --cookbook-path cookbooks --environment myapp-1_0 --freeze

在Chef服务器上引导一些新的客户端节点

knife bootstrap node1 -E myapp-1_0 -r recipe[myapp] ..
knife bootstrap node2 -E myapp-1_0 -r recipe[myapp] ..
..

环境的创建是有意的。 它可以使菜谱版本在运行时受到限制,从而在共享厨师服务器上提供隔离。

您应该使用Packer来完成此任务,因为它可以让您为包括Dockerized版本在内的任何平台创建这些映像,并且可以在Chef Cookbooks中进行配置。

然后,将图像上传到任何地方,并更改您的Vagrantfile(或您使用的任何文件)以指向该图像作为起点。

作为示例和起点,只需看一下根目录中“ packer”文件夹下的Opscode Bento服务存储库 (在GitHub上)。 Opscode大量使用Packer为其ChefDK服务等提供专门的预置盒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM