শেফ: যদি কোনও টেম্পলেট ইতিমধ্যে বিদ্যমান না থাকে তবে তার জন্য ডিরেক্টরি তৈরি করুন


17

আমার যদি কোনও টেম্পলেট তৈরি হচ্ছে, তবে আমি কীভাবে তা নিশ্চিত করতে পারি যে ডিরেক্টরিটি বিদ্যমান? এই ক্ষেত্রে:

template "#{node[:app][:deploy_to]}/#{node[:app][:name]}/shared/config/database.yml" do
  source 'database.yml.erb'
  owner node[:user][:username]
  group node[:user][:username]
  mode 0644
  variables({
    :environment => node[:app][:environment],
    :adapter => node[:database][:adapter],
    :database => node[:database][:name],
    :username => node[:database][:username],
    :password => node[:database][:password],
    :host => node[:database][:host]
  })
end

এই ব্যর্থ যেহেতু /var/www/example/shared/configজন্য বিদ্যমান নয় database.ymlঅনুলিপি করা হবে। আমি ভাবছি পুতুল কীভাবে আপনাকে একটি ডিরেক্টরি বিদ্যমান "নিশ্চিত" করতে দেয়।

উত্তর:


19

টেমপ্লেট তৈরির আগে ডিরেক্টরি তৈরি করতে ডিরেক্টরি সংস্থান ব্যবহার করুন । কৌশলটি recursiveঅ্যাট্রিবিউটটিও নির্দিষ্ট করে দেওয়া হয় অন্যথায় ক্রিয়াকলাপ ব্যর্থ হবে যদি না ডিরেক্টরিটির সমস্ত অংশ থাকে তবে ইতিমধ্যে ইতিমধ্যে বিদ্যমান থাকে।

config_dir = "#{node[:app][:deploy_to]}/#{node[:app][:name]}/shared/config"

directory config_dir do
  owner node[:user][:username]
  group node[:user][:username]
  recursive true
end

template "#{config_dir}/database.yml" do
  source "database.yml.erb"
  ...
end

নোট করুন ownerএবং groupডিরেক্টরি উত্সটি কেবল যখন পাতার ডিরেক্টরি তৈরি করা হয় তখনই প্রয়োগ করা হয়। বাকী ডিরেক্টরিটির অনুমতিগুলি পূর্বনির্ধারিত, তবে সম্ভবত root.root এবং আপনার উমাস্ক যা-ই হবে।


এজন্য আমি recursiveবিকল্পটি অপছন্দ করি ;-)
স্টিফেনকিং

হ্যা আমিও. এটি কেবল খুব শেফ-ওয়াই মনে হয় না হয় প্রতিটি স্তরকে নির্দিষ্ট করে দেওয়া বা এটি ডিফল্ট পর্যন্ত রেখে দেওয়া।
টিম পটার

ডিরেক্টরি সংস্থানটির জন্য লিঙ্কটি ভাঙা নতুন লিঙ্কটি হ'ল এই ডকস.সিএফ.ইউ
ব্রিক

4

directoryউত্সের আগে সংস্থানটি ব্যবহার করা ছাড়া আমি অন্য কোনও উপায় সম্পর্কে অবগত নই template:

directory "#{node[:app][:deploy_to]}/#{node[:app][:name]}/shared/config/
  owner node[:user][:username]
  group node[:user][:username]
end
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.