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

时间:2017-08-04 21:45:13

标签: puppet

我正在尝试使用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 

1 个答案:

答案 0 :(得分:0)

要在puppet中复制文件,您需要将文件放在文件下的模块路径中。因此,如果您的模块名为mymodule,则文件应该在此处:

./mymodule/files/mykey

并在模块中通过

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

除非您在pupper master上设置文件服务器挂载点,否则您无法将源指向puppet master上的其他位置,请参阅https://docs.puppet.com/puppet/4.10/file_serving.html。 但是来源可以指向其他地方,请参阅https://docs.puppet.com/puppet/4.10/types/file.html#file-attribute-source