"Я не уверен, почему ресурс webapp выполняется до вычисления 'storage_conn_str'."
Это потому, что storage_conn_str определен в ruby_block 'modify_token', Он не виден ресурсу веб-приложения.
Вместо этого вы можете создать атрибут.
Например: узел ["mycb"] ["storage_conn_str"] = ""
В ruby_block
ruby_block 'modify_token' do
block do
...
storage_conn_str = lazy { File.join(storage_conn_str , modified_token)}
Chef::Log.info("storage connection string: #{storage_conn_str}")
node.default["mycb"]["storage_conn_str"] = storage_conn_str
end
action :run
end
В ресурсе веб-приложения
webapp 'TableStorageAPI' do
...
storage_conn: node["mycb"]["storage_conn_str"]
...
end
Это должно решить вашу проблему