Я использую шеф-повар для управления серверами Ubuntu. Я добавляю консольный инструментарий каждому пользователю, который присутствует на серверах, большинство из которых создаются во время первого запуска Chef. При запуске Chef в первый раз пользователи создаются, но этот блок кода не добавляет символическую ссылку на набор инструментов или не создает правильный .bashrc-файл. Я думаю, это связано с тем, что ruby Dir.open('/home')
скомпилирован в начале прогона до создания пользователей, потому что файлы добавляются правильно при следующем запуске Chef.Получить список каталогов mid chef run
Как получить список каталогов, чтобы отразить текущее состояние системы, когда этот рецепт фактически запущен? Я думаю, что ruby_block
может быть тем, что мне нужно посмотреть, но я не уверен, как его применять здесь.
# Loop over all user folders
Dir.open('/home').each do |user_dir|
next if user_dir.start_with?('.')
link "/home/#{user_dir}/.bash_it" do
to '/home/.bash_it/'
link_type :symbolic
end
template "/home/#{user_dir}/.bashrc" do
source 'bashrc.erb'
owner user_dir
group user_dir
mode '0644'
end
end
вы могли бы сделать что-то вроде добавить его в/и т.д./SKEL на поле так, что он создал автоматически как часть добавления пользователя? – Doon
Ruby_block может быть решением да, определением или провайдером, так как он будет скомпилирован при вызове при сближении времени (и поэтому ваши диски были бы уже созданы). сделать это за два прохода (два прохода повара) - это еще один способ достичь этого. – Tensibai