1
我想要完成的是生成一個ssh密鑰並將公鑰設置爲節點屬性,以便稍後可以搜索該節點屬性並將其添加到其他服務器/用戶authorized_keys。生成然後從文件廚師讀取內容
我第一次嘗試是這樣的:
key = '/home/vagrant/.ssh/id_rsa'
bash "generate_key" do
user "vagrant"
code <<-EOH
ssh-keygen -f #{key} -t rsa -N ''
EOH
not_if { ::File.exists?(key) }
end
ruby_block "reload_config" do
block do
node.default['test'] = IO.read("#{key}.pub")
node.save
end
action :create
end
node.save #because i donno?
log "#{node['test']}"
失敗的原因(我認爲)在bash塊前的紅寶石塊進行評估,所以沒有文件的讀取和或node['test']
在編譯時計算所以它是空白的(儘管它不適用於第二次收斂,當文件存在時)。
我感覺迷失在表面看起來微不足道的東西上。
從默認更改爲設置沒有辦法。但是使用你的代碼,我試圖理解爲什麼。是因爲一切都是在收斂時間完成的,而不是編譯時間? – erichelgeson
不確定,你是否嘗試刪除'ruby_block'中的'only_if'來查看它是否仍然有效? – StephenKing