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