0
感謝您看看這個問題。任何幫助表示讚賞。 我使用流浪漢和廚師爲GUI配置虛擬機。如何在安裝配方運行後使用廚師和流浪者配置軟件
目標:下載的IntelliJ IDE並安裝它,這樣它是提供給我的用戶,當我登錄
菜譜cookbook 'idea', '~> 0.4.0'
達到了下載,但用戶必須手動完成安裝上的來賓。
我無法使用我的自定義配方與廚師完成配置。按照寫法,如果在配置計算機之後將配方添加到運行列表中,但配方會完成,但由於文件尚未安裝,因此在初始運行時會失敗。
我試圖在相關塊和整個配方內使用only_if
方法,但無法使其工作。我也搞砸了subscribe
方法,但無法讓它工作。
我相信這有一個簡單的解決方案,但谷歌搜索和試驗和錯誤沒有讓我更接近。我將不勝感激任何幫助實現這一目標。謝謝!
當前配方
# Configure IntelliJ Idea.
file '/opt/idea/idea.desktop' do
content '[Desktop Entry]
Name=IntelliJ IDEA
Type=Application
Exec=idea
Terminal=false
Icon=idea
Comment=Integrated Development Environment
NoDisplay=false
Categories=Development;IDE;
Name[en]=IntelliJ IDEA'
mode '644'
owner 'root'
group 'root'
end
bash 'install idea desktop' do
code <<-EOH
cd /opt/idea
sudo desktop-file-install idea.desktop
EOH
end
file '/usr/share/pixmaps/idea.png' do
owner 'root'
group 'root'
mode '0644'
content ::File.open('/opt/idea/bin/idea.png').read
action :create
end
link '/usr/local/bin/idea' do
to '/opt/idea/bin/idea.sh'
link_type :symbolic
end
失敗的努力: 環繞整個腳本
# Configure IntelliJ Idea.
execute 'configure idea' do
only_if { ::File.exist?("/opt/idea") }
continues...
end
在塊使用only_if
file '/usr/share/pixmaps/idea.png' do
action :create
only_if { ::File.exist?('/opt/idea/bin/idea.png') }
owner 'root'
group 'root'
mode '0644'
content ::File.open('/opt/idea/bin/idea.png').read
end
link '/usr/local/bin/idea' do
to '/opt/idea/bin/idea.sh'
only_if { ::File.exist?('/opt/idea/bin/idea.sh') }
link_type :symbolic
end
謝謝@coderanger。您的解決方案按預期工作。我編輯了需要延遲到收斂時間和機器按預期供應的兩個模塊。 '......內容懶惰{:: File.open('/ opt/idea/bin/idea.png')。read}'和'... to lazy {'/opt/idea/bin/idea.sh '}' – jraviotta