使用相对路径的木偶复制文件

问题描述:

我想用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部分让我们知道设置。 –

为了在木偶复制文件,你需要把文件中的模块路径下的文件。所以,如果你的模块名为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