У меня возникают проблемы, пытаясь понять, что происходит, почему чистый рубиновый код выполняется первым, несмотря на то, что код ставится последним, это часть того, что действие: install содержит:LWRP чистый код ruby vs другой порядок выполнения ресурсов поваренной книги
action :install do
...
windows_package "#{installation_name}" do
source "#{Chef::Config[:file_cache_path]}\\#{installer_filename}"
options "INSTALLDIR=\"#{installation_path}\""
action :install
not_if {::Dir.exists?("#{installation_path}\\bin")}
end
env "MYSQL_PATH" do
value "#{installation_path}"
end
windows_path "#{installation_path}\\bin" do
action :add
end
windows_batch "Installing Service" do
code <<-EOH
set MYSQL_PATH="#{installation_path}"
call %MYSQL_PATH%\\bin\\mysqld-nt.exe --install MySQL
EOH
end
service "MySQL" do
action :start
end
service "MySQL" do
action :enable
end
change_pass_str = "call \"#{installation_path}\\bin\\mysql.exe\" -u root --execute \"UPDATE mysql.user SET Password=PASSWORD('#{root_password}') WHERE User='root';FLUSH PRIVILEGES;\""
puts change_pass_str
password_set_result = system(change_pass_str)
log !password_set_result ? "Password wasn't changed since root already have a password defined. Maybe there's still data from a previous installation." : "Password has been set!"
end
Пожалуйста, игнорируйте тот факт, что я не задал определение переменной и не знаю, что они определены. Дело в том, что, когда эта часть lwrp выполнена
change_pass_str = "call \"#{installation_path}\\bin\\mysql.exe\" -u root --execute \"UPDATE mysql.user SET Password=PASSWORD('#{root_password}') WHERE User='root';FLUSH PRIVILEGES;\""
puts change_pass_str
password_set_result = system(change_pass_str)
он не может найти #{installation_path}\\bin\\mysql.exe
, так как он еще не установлен, несмотря на то, что блок находится в конце действия.
Может ли кто-нибудь указать мне, в чем моя ошибка? почему другие (уже определенные в этом случае в Windows LWRP) ресурсы выполняются в конце, а не в начале? Как я могу это исправить?