web-dev-qa-db-ja.com

ナイフですべてをアップロードする

次のようなディレクトリを持つ標準のChefリポジトリがあるとします。

cookbooks
data_bags
environments
roles

すべてを一度にアップロードする方法はありますか?それ以外の場合は、これを行う必要があります。

knife cookbook upload -a
knife data bag from file data_bags/*.json
knife environment from file environments/*.rb
knife role from file roles/*.json

おそらく、このようなことを行うサードパーティのツールはありますか?

5
Steve Bennett

Ruby 1.9を使用していることを確認してから、knife-essentialsをインストールしてください

$ gem install knife-essentials

次に、以下を〜/ .chef /knife.rbに追加します

repo_mode 'everything'
versioned_cookbooks true
chef_repo_path 'PATH/TO/chef-repo'

次に、サーバー全体またはその一部のみをダウンロード/アップロードできます。ダウンロードすると、シェフリポジトリに多くの.jsonファイルが配置され、私が見つけたバックアップに適しています。

$ knife download /
$ knife upload /
$ knife upload /clients

また、ロールがRubyファイルとして保存されている場合(例:roles/*.rb)、それらをjsonに変換する必要があります。その後、jsonとしてchefサーバーから再ダウンロードできます。例えば:

  1. knife role from file roles/*.rb
  2. knife download roles/

このメソッドは、 chefサーバー10から11へのアップグレード にも使用されます。

4
CrackerJackMack

次のような簡単なbashスクリプトを作成できます。

#!/bin/sh

for file in `ls cookbooks`;do
 [ -d $file ] && knife cookbook upload cookbooks/$file
done
for file in `ls data_bags | grep \.json$`;do
 knife data bag from file data_bags/$file
done
for file in `ls environments | grep \.rb$`;do
 knife environment from file environments/$file
done
for file in `ls roles | grep \.json$`;do
 knife role from file roles/$file
done

次に、。/ script.shを使用して呼び出します。これにより、すべてが自動的に実行されます。

5
Logic Wreck

私はsyncと呼ばれる小さなナイフプラグインを書きました-これもこれを達成する以下に説明されています:
https://github.com/cdoughty77/knife-sync-all

2
user157183

現在 ドキュメント 単にknife upload /。ドキュメントには他の可能性があります。

1
mmell

Chefリポジトリから。

knife upload .を実行すると、すべてがアップロードされます。

1
Starx