gpt4 book ai didi

chef-infra - 如何在移动文件之前让 Chef 等待应用程序部署?

转载 作者:行者123 更新时间:2023-12-01 00:57:10 26 4
gpt4 key购买 nike

我有以下厨师食谱

aws_s3_file "/usr/share/tomcat/webapps/system.war" do
bucket "mybucket"
remote_path "builds/system_latest.war"
aws_access_key_id node[:aws_access_key_id]
aws_secret_access_key node[:aws_secret_access_key]
end

service "tomcat" do
action [:restart]
end

aws_s3_file "/usr/share/tomcat/webapps/system/WEB-INF/application.properties" do
bucket "mybucket"
remote_path "config/application.properties"
aws_access_key_id node[:aws_access_key_id]
aws_secret_access_key node[:aws_secret_access_key]
end

每次运行它都可以正常工作,除非机器是全新的。

当它是一台新机器时,我得到:

Errno::ENOENT ------------- No such file or directory - /usr/share/tomcat/webapps/system/WEB-INF/application.properties



我认为这是因为 tomcat 没有完成应用程序的部署,所以在运行此语句时文件夹不存在。

我想在部署应用程序时移动文件是一个正常的过程。我怎样才能做到这一点并保证 Chef 会等到部署完成?

最佳答案

编写一些代码(可能使用 Ruby 或 Bash)来查询 Tomcat 是否已完成,将其放入 while 循环中。

ruby_block 'wait for tomcat' do
block do
true until ::File.exists?('/usr/share/tomcat/webapps/system/WEB-INF')
end
end

关于chef-infra - 如何在移动文件之前让 Chef 等待应用程序部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26744886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com