Ruby on Railsアプリケーション(Chef::Knife::Ec2ServerCreate.new()
)からAWSで新しいインスタンスを起動できます。 JSON属性を設定しようとするまでうまく動作します。コマンドラインから設定して、knife.batを起動すると、動作します。 ec2_server_createを見ると、コマンドラインオプション--json-attributesは、シンボル:json_attributesにマップされています。私は、次のコードを使用して設定しようとしました:Windows、Ec2ServerCreate - Railsアプリケーションからナイフを実行するときにJSON属性を設定できない
Chef::Config[:knife][:json_attributes] = "{'NodeName' : 'Node001'}"
を、私はエラーを取得する:はTypeError(整数にシンボルの無暗黙的な変換): とすぐに、私はこの単一の行をコメントとして、インスタンスが作成され、に登録シェフサーバーとレシピが実行中です。 最初のシェフクライアントのjson属性を設定する方法はありますか? PS サンプルコードは属性の定数値を示していますが、実際の値は動的に作成されます。
あなたが見つけることができるソースを見ると/chef/knife/core/bootstrap_context.rb:188:in `[]=': no implicit conversion of Symbol into Integer (TypeError)
を::
def first_boot
(@config[:first_boot_attributes] || {}).tap do |attributes|
if @config[:policy_name] && @config[:policy_group]
attributes[:policy_name] = @config[:policy_name]
attributes[:policy_group] = @config[:policy_group]
else
attributes[:run_list] = @run_list #THIS LINE CAUSES EXCEPTION
end
attributes.merge!(:tags => @config[:tags]) if @config[:tags] && [email protected][:tags].empty?
end
end
私は実行リストを設定し、エラーが発生し エラーメッセージとコード行。
私は、ナイフをRubyライブラリとして使用することはサポートされていないという記録を述べます。ナイフへの唯一のパブリックインターフェイスは、それをコマンドとして実行しています。ブートストラップをサポートするRubyライブラリが必要な場合は、Fogを使用します。 – coderanger
情報ありがとうございます。残念ながら、以前はこの情報が見つかりませんでした.Rails APIアプリケーションとしてRailsが選択されました。 ライブラリとしてサポートしない理由は何ですか? メソッドの実装の最上部にパラメータ解析がいくつかあります。 –