2

ソフトウェア ソリューションを実行する環境をセットアップするために、いくつかのクックブックを作成しました。これらのクックブックは 2 つの git サーバーにあり、パブリック クックブックに依存しています (私たちは berkshelf を使用しています)。

ソフトウェア ソリューションをさまざまなクライアント環境 (ハードウェア) にプロビジョニングする必要があります。そのためには、開発マシンの 1 つですべてのパッケージを作成し、そのパッケージをクライアントのプロビジョニング マシンにアップロードできるようにしたいと考えています。環境。次に、そのプロビジョニング マシンを使用して、そのクライアントのすべてをセットアップします。

このようにする必要があるのは、クライアント環境のプロビジョニング マシンがクックブックを保存している git サーバーにアクセスできないためです。インターネットにアクセスできない場合もあります。基本的に、クライアント環境を完全に孤立した島として扱いたいと考えています。

環境全体 (依存関係を含む) をパッケージ化し、プロビジョニング サーバーにアップロードできるようにしたいと考えています。次に、chef-zero を起動し、そこからその環境のすべてのノードをプロビジョニングします。

問題は、これを達成する方法がまったくわからないことです。

4

3 に答える 3

0

spiceweasel をご覧ください ( https://github.com/mattray/spiceweasel )

私は最近これを使用していませんが、これは顧客のクラスターにインストールするときの (use-'ta-work-there での) 私たちの戦略でした。

于 2014-11-07T18:41:55.783 に答える
0

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

使用法: Chef サーバー

クックブックをシェフサーバーにアップロードする

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

シェフサーバーに対していくつかの新しいクライアントノードをブートストラップします

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

環境の作成は意図的なものです。これにより、実行時にクックブックのバージョンを制限できるようになり、共有シェフ サーバーでの分離が実現します。

于 2014-11-08T11:22:33.220 に答える