シェフを募集しており、ここで助けを求めています。 Chefを使用してChefノードサーバー(Windows Server 2012マシン)にビルドを展開する方法を検討しています。私はcopy_buildsと呼ばれる料理レシピを持っており、中央のリポジトリに行き、配備するビルドを選択し、ノードサーバーにコピーします。私が持っているレシピには、コピーステップを実行する基本的なステップが含まれています。このレシピは、ビルド名を除いて、展開したいすべてのビルドに使用できます。外部ソースからシェフレシピにパラメータを渡す方法
ここレシピの一例である:あなたが見ることができるように
powershell_script 'Copy build files' do
code '
$Project = "Dev3_SomeCoolBuild"
net use "\\\\server\\build_share\\drop\\$Project"
$BuildNum = GC "\\\\server\\build_share\\drop\\$Project\\buildlabel.txt"
robocopy \\\\server\\build_share\\drop\\$Project\\bin W:\\binroot\\$BuildNum'
end
、変数$プロジェクトは、このレシピでは、ビルドの名前が含まれています。私たちが100種類の異なるビルドを持っていて、それぞれが異なる名前を持っているなら、copy_builds料理レシピに100種類のレシピを作成せずにこれを処理する最良の方法は何ですか?
ところで:
knife node run_list set $Node "recipe[copy_builds::$ProjectName],recipe[install_build]"
このコマンドは、(外部PowerShellスクリプトから)プロジェクト/ビルドが含まれています。これは私が現在、シェフの外部だPowerShellスクリプトにある、展開するシェフを呼んでいることはどのようですその中の名前情報は$ ProjectName変数です。この場合、$ ProjectNameには、Dev3_SomeCoolBuild.rbというレシピを参照するための 'Dev3_SomeCoolBuild'という値が含まれています。
私が望むのは、copy_builds料理本の下に1つのデフォルトレシピがあり、ビルド/プロジェクト名を渡すことです。これは可能ですか?それを行う最善の方法は何ですか?データバッグ、属性、プロバイダについては読んだことがありますが、必要なものについてはうまくいくかどうかはわかりません。
お知らせください。
おかげで、 キース
上記のレシピで$ Project = "Data_Bag_Item"のようなものに変更した場合、それは既に外部のpowershellスクリプトからデータバッグを呼び出すにはどうすればいいですか?ナイフノードrun_list set $ Node "recipe [copy_builds :: $ ProjectName] install_build]」を選択します。このコマンドは変更できますか?追加のナイフコマンドを実行しますか?申し訳ありませんが、まだシェフにとって初めてです。 – Keith
ちょうど始めるなら、私はこれをやってみません。必要に応じてレシピをコピーしてパスタします。 'data_bag_item'を使って作業することはChefのドキュメントの例がありますが、あなたがRubyを知らないのであれば、あなたは噛んでほしくないでしょう。 – coderanger
私はRubyについてもっと学び、学ぶ気にしないので、data_bag_itemのドキュメントをチェックします。 – Keith