2017-08-04 42 views
0

我想用puppet和vagrant編寫代碼,並且無法找到如何將文件從包含清單的目錄複製到目標服務器。使用相對路徑的木偶複製文件

在ansible我用這個:

- name: Copy public key 
    copy: 
    src: ./myKey 
    dest: /home/user/.ssh/authorized_keys 

我想這樣做傀儡

- file { 'myKey': 
    path => '/home/user/.ssh/authorized_keys', 
    ensure => file, 
    source => ./myKey } 

我明白瞭如何使用絕對路徑,使這項工作,但想用相對路徑,因爲我的腳本將被一個git克隆拉下來,並在另一臺將有不同目錄設置的機器上運行。

Vagrant.configure("2") do |config| 
config.vm.network "private_network", ip: "192.168.1.1", auto_config: true 
config.vm.box = "puppetlabs/centos-7.2-64-puppet-enterprise" 
config.vm.provision "puppet" do |puppet| 
    puppet.manifest_file = "srv_site.pp" 
end 
end 
+0

主人還是沒有主人? –

+0

我使用vagrant來提出它,所以我認爲主人?我使用的是: Vagrant.configure(「2」)do | config | config.vm.provision「傀儡」 結束 我會更好使用這個嗎? puppet.module_path =「./」還是要繼續查看模塊文件夾? 對不起,如果這是明顯的通過測試,我會在星期一進行測試。 有了puppet -apply我知道有-module選項可以指定,但我不知道如何做到這一點與流浪。 – lime

+0

請發佈Vagrantfile的Puppet provisioning部分讓我們知道設置。 –

回答

0

爲了在木偶複製文件,你需要把文件中的模塊路徑下的文件。所以,如果你的模塊名爲MyModule的文件應該在這裏:

./mymodule/files/mykey 

和文件由

file { 'mykey': 
    ensure => file, 
    path => '/home/user/.ssh/authorized_keys', 
    source => "puppet:///modules/${module_name}/mykey" 
    } 

你不能傀儡師源指向不同的地方複製的模塊中,除非您在pupper master上設置了一個文件服務器掛載點,請參閱https://docs.puppet.com/puppet/4.10/file_serving.html。 但源碼可以指向其他地方,請參閱https://docs.puppet.com/puppet/4.10/types/file.html#file-attribute-source