2013-04-24 96 views
1

寫我的第一個流浪廚師獨奏食譜我想到了一些簡單的東西,比如改變主機名。在流浪文件中,我有這個;在流浪廚師獨奏配方中重寫主機名

config.vm.provision :chef_solo do |chef| 
    chef.cookbooks_path = "../../chef/cookbooks" 
    chef.roles_path = "../../chef/roles" 
    chef.data_bags_path = "../../chef/data_bags" 

    chef.json = { :hostname => "foofoo" } 
    chef.add_recipe "myrecipe" 

in myrecipe/recipes/default.rb;

myvar = node[:hostname] 

template "/tmp/myfile" do 
    source "myfile.erb" 
    owner "root" 
    group "root" 
    mode 0644 
    variables(
     :myvar => myvar 
    ) 
end 

in myrecipe/templates/default/myfile.erb;

<%= @myvar %> 

這實際上不起作用。/tmp/myfile始終以/ etc/hostname中的真實主機名結束。很久以後,我的頭撞過頭,我碰到了這些變化;

在流浪文件中;

chef.json = { :myhostname => "foofoo" } 

在配方文件中;

myvar = node[:myhostname] 

所以,似乎「:主機名」是特殊的莫名其妙,但儘量爲我可能,我找不到解釋了爲什麼,或如何覆蓋它,或者其他什麼「特殊」的值有任何文件可能可用。

大部分文檔似乎都假設我還沒有達到某種程度的能力。所以,我可能已經看到了答案,並沒有認出它。任何人都可以向我指出可以解釋這個問題的'絕對初學者'文檔嗎?

回答

1

第一:這是正是我與廚師獨奏第一實驗也和:更改主機名IST 一個可以做(最簡單的事情,因爲廚師的其餘部分運行舊的主機名仍然讓你不得不做醜陋的東西重新啓動廚師等);-)

二:node['hostname']是專用的確(這是一個所謂的automatic attribute),它就會從目標主機更新通過​​這樣你就可以在你的模板例如使用

編輯:您可以使用this cookbook來申請主機名。

+0

有沒有辦法在vagrant文​​件中改變它呢?例如,我可以使用'config.vm.base_mac =「auto」'設置VM MAC('node [:macaddress]')。 – CAB 2013-04-24 19:14:25

+0

我在vagrant 1.0.x文檔中發現了'config.vm.host_name',但在新版本的文檔中找不到任何類似的東西。我從實驗中知道它不起作用 - vm:以下設置不存在:host_name' – CAB 2013-04-24 19:51:57

+0

只有廚師纔有可能,但它不太好。對我而言,我制定了一條規則,即使在廚師環境中,我也會應用任何與網絡有關的設置(並且主機名爲一個),原因有兩個:a)引導問題和b)失敗和失去連接的風險 – cmur2 2013-04-24 20:11:57