我想在Windows节点上安装Tomcat-Server,然后复制修改后的server.xml,以便配置完成。
此时,可以使用Chef和Windows cookbook轻松完成:
windows_zipfile node['tomcat']['install_dir'] do
source node['tomcat']['url']
action :unzip
not_if {::Dir.exists?(node['tomcat']['dir'])}
end
cookbook_file 'server.xml' do
path "#{node['tomcat']['dir']}conf/server.xml"
action :create
end
现在棘手的部分:应该允许用户更改server.xml!当他执行此操作并且chef-client运行时,它将覆盖用户更改server.xml并放回给定的cookbook文件。但这绝不可能发生。只有在成功解压缩Tomcat服务器后才能复制该文件。
所以我认为我肯定需要一个not_if / only_if语句。
像somthing一样验证cookbook文件只在tomcat解压缩时安装。有没有办法说“only_if windows_zipfile被执行”或类似的东西?
或者我应该比较server.xml(节点的)的长度,如果长度与未修改的标准server.xml的安装长度相匹配,只能用cookbook文件替换它? (< ==这听起来很令人毛骨悚然)
对于windows_zip文件的given actions在这里没有帮助我猜...
提前谢谢
Bohne