[英]chef provisioning recipe to make AWS security groups, how to run from server vs chef client
[英]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.