【问题标题】:Copy files using puppet with relative path使用具有相对路径的 puppet 复制文件
【发布时间】:2018-01-12 22:20:20
【问题描述】:

我正在尝试使用 puppet 和 vagrant 编写代码,但无法找到如何将文件从包含清单的目录复制到目标服务器。

在ansible中我使用了这个:

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

我想用 puppet 做这样的事情

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

我了解如何使用绝对路径来完成这项工作,但我想在这里使用相对路径,因为我的脚本将被 git clone 拉下并在另一台具有不同目录设置的机器上运行。

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 

【问题讨论】:

  • 大师还是没有大师?
  • 我正在使用 vagrant 来提出它,所以我认为是主人?我正在使用这个: Vagrant.configure("2") do |config| config.vm.provision "puppet" end 使用这个会更好吗? puppet.module_path = "./" 还是要在模块文件夹中查找?抱歉,如果通过测试很明显,我将在星期一进行测试。使用 puppet -apply 我知道可以指定 -module 选项,但我不知道如何使用 vagrant。
  • 请发布 Vagrantfile 的 Puppet 配置部分,让我们知道设置。
  • 添加了 vagrantfile
  • 你的模块的目录结构是什么样的?

标签: puppet


【解决方案1】:

为了在 puppet 中复制文件,您需要将文件放在 files 下的模块路径中。所以如果你的模块被命名为 mymodule 文件应该放在这里:

./mymodule/files/mykey

在模块中文件被复制

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

您不能将源指向 puppet master 上的其他位置,除非您在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 2013-09-13
    • 1970-01-01
    • 2016-08-03
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多