繁体   English   中英

如何从模块中获取puppet清单中的文件

[英]How to source a file in puppet manifest from module

我试图从puppet清单中的本地模块中获取文件(在独立模式下使用puppet):

file {
  '/home/repowt/.crontab':
    ensure => present,
    source => 'puppet:///modules/site/crontab';
}

但我得到:

Could not evaluate: Could not retrieve information from source(s) ...

该文件位于:

config/puppet/modules/site/files/crontab

(puppet是通​​过vagrant provision调用的,Vagrantfile指定module_path ='config / puppet / modules',显然可以,因为puppet从那里加载带有导入的模块。)

我也尝试过:

source => 'puppet:///site/crontab'
source => 'site/crontab'
source => 'config/puppet/modules/site/files/crontab'
source => '/modules/site/crontab'

无济于事。 我发现网上没有什么亮点,看起来很简单。 感谢您的帮助。

这里有几件事情。

首先,正如pwan所说,需要正确设置fileserver.conf

请记住/vagrant包含Vagrantfile所在的目录(因此包含所有内容),这对我来说意味着:

vm_config.vm.provision :puppet, :module_path => "modules", :options => ["--fileserverconfig=/vagrant/fileserver.conf", ]

我的fileserver.conf指定要使用/etc/puppet/files

虽然我可以为Vagrant指定一个不同的fileserver.conf ,但我想要的一切都和普通的一样。

所以,我也装了/etc/puppet/files

vm_config.vm.share_folder "files", "/etc/puppet/files", "files"

哪些东西对我有用。

puppet:///modules/my_module/file应匹配%vagrant_root%/modules/my_module/files/file

我注意到Vagrant在目标VM上安装了它的dir副本(我使用的是基础http://dl.dropbox.com/u/15307300/vagrant-0.7-centos-64-base.box ); 做一个“装载”,看看你是否也有这个。

这允许我在我的Vagrant中创建一个目录,与清单/我称之为“files /”并行。 然后我将配置源文件放在那里,例如,... / myvagrantproject / files / slapd.conf。 它在VM上显示为/vagrant/files/slapd.conf

然后在文件源的puppet清单中,我将源列为绝对文件路径,而不是puppet服务器路径,如:

file { 'slapd.conf':
  name          => '/etc/openldap/slapd.conf',
  ensure        => present,
  source        => '/vagrant/files/slapd.conf',
  owner         => root,
  group         => ldap,
  mode          => 0640,
  require       => Package["ldapservers"],
}

它发现它自己的vbox安装的远程文件系统没有问题。

您的原始puppet:// modules / site / crontab应该可以正常工作。

我怀疑你的puppetmaster上的fileserver.conf可能没有模块部分。 如果它不存在,请尝试添加类似下面的内容。

[modules]
    allow *

查看http://docs.puppetlabs.com/guides/modules.html上的“模块查找”部分

如果您在独立模式或客户端 - 服务器模式下使用puppet,则从您的描述中不清楚。 假设您使用的是独立模式,请仔细检查vm中的/ tmp文件夹,查看模块文件夹是否确实存在,并且vagrant已经安装了它。 您可以加载清单的事实并不意味着模块也在那里。

您的原始配置看起来正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM