ruby - 如何在厨师食谱中记录 node.run_state 的值?
问题描述
我有一个像下面这样的食谱
target = node['zookeeper']['override']['target']
remote_file target do
source node['zookeeper']['override']['url']
owner 'root'
group 'root'
mode '0644'
action :create_if_missing
end
ruby_block 'check_zookeeper_upgraded' do
block do
node.run_state['zookeeper_upgraded'] = File.readlink('/usr/lib/zookeeper/zookeeper.jar').equal?(target)
end
end
link '/usr/lib/zookeeper/zookeeper.jar' do
group 'root'
owner 'root'
to target
action :create
not_if { node.run_state['zookeeper_upgraded'] }
end
file '/usr/lib/zookeeper/zookeeper-3.4.8.jar' do
action :delete
only_if { ::File.exist? '/usr/lib/zookeeper/zookeeper-3.4.8.jar' }
end
file '/usr/lib/zookeeper/zookeeper-3.4.5-cdh5.15.0.jar' do
action :delete
only_if { ::File.exist? '/usr/lib/zookeeper/zookeeper-3.4.5-cdh5.15.0.jar' }
end
service 'zookeeper-server' do
provider Chef::Provider::Service::Upstart
action :restart
ignore_failure true
only_if { !node.run_state['zookeeper_upgraded'] && !::File.exist?('/etc/init/zookeeper-server.override')}
end
有人可以让我知道如何记录的值,node.run_state['zookeeper_upgraded']
以便我可以检查是否zookeeper-server
最终重新启动?
解决方案
推荐阅读
- flutter - 音频文件无法在 IOS 模拟器中播放
- angular - 自动插入
*ngFor 中的值变化 - firebase - 将两个以上的帐户合并为一个
- python-3.x - 是否可以使用 python 在单点登录、两因素身份验证环境中访问 SharePoint 网站?
- node.js - 集群模式下的nodejs
- javascript - 通过 iFrame 用于 YouTube API 的画中画 (PiP)
- html - 如何仅使用 html 代码添加地址标签作为文件的输入
- c++ - 这个哈希表中的“:”和“ch”是什么意思循环“for(char ch:key)”?
- java - 在 Mac 上运行 apache Kafka 的问题
- json - 指定要通过 JSON 返回的视图