Я читаю файл внутри ruby_block в шеф-поваре. Я сохраняю каждую строку в массиве. Я хочу, чтобы они были доступны в любом месте рецепта моего шеф-повара, поэтому я немного поработал и выяснил, что могу использовать объект-узел.Как сохранить массив в поваре объектов узла?
Проблема заключается в том, что когда я использую объект-узел, он сохраняет только последнюю строку, а не каждую строку.
Это мой код. Какие-либо предложения?
ruby_block "name" do
block do
CSV.foreach('/tmp/users.txt') do |row|
node['username']=row
end
end
action :run # see actions section below
end
Итак, теперь это мой код.
ruby_block 'name' do
block do
CSV.foreach('/tmp/users.txt'){ |row| node.run_state['username123'] |= [row] }
end
end
directory "/sftp/#{node.run_state['username123']}/incoming" do
action :create
recursive true
end
и мои выходы шеф-повара подходят.
directory[/sftp//incoming] action create
- create new directory /sftp//incoming
Привет, Файл имеет некоторый контент, но мой объект-узел, но мой объект-объект не имеет значения. В этом случае вы, вероятно, будете лучше создавать LWRP. я не уверен, что происходит. Можете ли вы что-нибудь посоветовать? –
Вы пробовали код, который я разместил? Вы также можете добавить сообщение Chef :: Log.warn внутри блока ruby, чтобы убедиться, что вы правильно .. разбор файла –
Да я использовал свой код Это то, что мой код выглядит '«имя»ruby_block сделать блок сделать CSV.foreach («/ TMP/users.txt») {|. строка | узел ,run_state [ 'username123'] | = [строка]} конец end' каталог ' "/ SFTP/# {узел [ 'username123']}/входящий" сделать действия: создать рекурсивный истинную end' Это мой выход. Я не уверен, что я делаю неправильно. 'directory [/ sftp // incoming] action create - создать новый каталог/sftp // incoming' –