প্রয়োজনীয় বৈশিষ্ট্যের জন্য কোনও ডিফল্ট মান নেই


8

যখন কোনও বৈশিষ্ট্যের জন্য কোনও যুক্তিসঙ্গত ডিফল্ট না থাকে, তখন কোনও সংস্থান হিসাবে কোনও সংস্থায় কোনও বৈশিষ্ট্য ব্যবহারের জন্য প্রস্তাবিত পদ্ধতির কী। গুণমানটি রানটাইমের সময় সরবরাহ করা হবে বলে আশা করা হচ্ছে। যদি এটি না হয় তবে শেফ রেসিপি কার্যকর করতে ত্রুটি করা উচিত।

টেম্পলেটটিতে প্রয়োগ করার সাথে সাথে আমার এখন যেভাবে বৈশিষ্ট্যগুলির মান রয়েছে তা খালি স্ট্রিং।

/recipes/default.rb

template "/var/tmp/my_script.sh" do
    source "my_script.erb"
    mode "0755"
    variables({
        :url => node['environment']['url']
    })
end

/templates/default/my_script.erb

#!/bin/bash
echo "The url is: <%= @url %>"

ফলস্বরূপ /var/tmp/my_script.sh ফাইলটি দেখতে এমন হবে:

#!/bin/bash
echo "The url is: "

তবে আমি আশা করি এটি কেবল ত্রুটি থেকে যায় would কোন পরামর্শ?

উত্তর:


5

একটি বিষয় উল্লেখ করতে হবে - যদি node['environment']একেবারেই সেট না করা থাকে তবে আপনার উদাহরণটি যেমন রয়েছে তেমন ব্যর্থ হবে। আমি যে আউটপুট পেয়েছি তা এখানে:

[Tue, 16 Oct 2012 02:40:31 +0000] INFO: Starting Chef Run for vagrant.int.housepub.org
[Tue, 16 Oct 2012 02:40:31 +0000] INFO: Running start handlers
[Tue, 16 Oct 2012 02:40:31 +0000] INFO: Start handlers complete.
[Tue, 16 Oct 2012 02:40:31 +0000] ERROR: Running exception handlers
[Tue, 16 Oct 2012 02:40:31 +0000] ERROR: Exception handlers complete
[Tue, 16 Oct 2012 02:40:31 +0000] FATAL: Stacktrace dumped to /tmp/vagrant-chef-1/chef-stacktrace.out
[Tue, 16 Oct 2012 02:10:38 +0000] FATAL: NoMethodError: undefined method `[]' for nil:NilClass

তবে এটি খুব সহায়ক নয় এবং এটি সর্বদা পর্যাপ্তও নয়। সম্ভবত আপনি বৈশিষ্ট্যের কিছু অতিরিক্ত বৈধতা করতে চান। সেক্ষেত্রে আপনি নিজের রেসিপিটিতে এরকম কিছু রাখতে পারেন:

unless node['environment']['url'] && node['environment']['url'].size > 5
  Chef::Application.fatal!("The URL attribute isn't long enough.")
end

এখন, শেফ রানটি ব্যর্থ হলে আপনাকে আরও সহায়ক বার্তা দেবে:

[Tue, 16 Oct 2012 02:41:36 +0000] INFO: Starting Chef Run for vagrant.int.housepub.org
[Tue, 16 Oct 2012 02:41:36 +0000] INFO: Running start handlers
[Tue, 16 Oct 2012 02:41:36 +0000] INFO: Start handlers complete.
[Tue, 16 Oct 2012 02:41:36 +0000] FATAL: The URL attribute isn't long enough.
[Tue, 16 Oct 2012 02:41:36 +0000] ERROR: Running exception handlers
[Tue, 16 Oct 2012 02:41:36 +0000] ERROR: Exception handlers complete
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.