シェフのレシピに奇妙な問題があります。私はChefを初めて使用するので、何かがひどく間違っているように見える場合はご容赦ください。
Spring Boot によってビルドされた war ファイルがあります。java -jar <file>.war -config=config/
アプリを実行するために実行する必要があります。
私は最近、Chef の実験を始め、この仕事をするレシピを書き始めました。
私のレシピのコードは次のとおりです。
#Some code has been omitted intentionally.
directory "#{home}" do
owner 'root'
group 'root'
mode '0755'
recursive true
end
directory "#{home}/config" do
owner 'root'
group 'root'
mode '0755'
end
cookbook_file "#{home}/config/ehcache.xml" do
source "ehcache.xml"
mode "0644"
end
# Get the war file from the repo
remote_file "#{home}/app.war" do
source "#{node['baseos']['files_repo_url']}/wars/app.war"
owner 'root'
group 'root'
mode '0644'
end
execute 'Run the war file' do
command "java -jar '#{home}/app.war' -config='#{home}/config/'"
action :run
end
execute
コマンドが実行される前に、war ファイルと関連する config フォルダーとその内容が、それぞれの宛先に正常にコピーされています。問題は、マシンが で新しく作成されたときにkitchen create
、最初のマシンがkitchen verify
と言って失敗すること'Errno::ENOENT: No such file or directory - java -jar /opt/com/app.war -config=config/'
です。これは初めてのことです。驚いたことに、kitchen verify
もう一度言うと、アプリが起動し、正常に実行されます。
これは、必要なファイル app.war と config/ が適切な権限を持つマシンに既に存在する [または存在するはずである] ため、奇妙です。
Chef がこれらのことを順番に処理することはわかっているので、execute コマンドがレシピの最後の行であることを考えると、war ファイルを実行するために必要なものが既にあるはずです。私は頭がおかしくなっています、誰かがこれについての洞察を提供できますか?
ありがとうございました!