linux - Puppet 找不到我刚安装的模块

标签 linux module puppet

我发现的问题是我可以成功安装 Puppet 模块。例如:

[puppet@swarmcritic ~]$ puppet module install puppetlabs/mysql
Notice: Preparing to install into /home/puppet/.puppet/modules ...
Notice: Created target directory /home/puppet/.puppet/modules
Notice: Downloading from https://forge.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/home/puppet/.puppet/modules
└─┬ puppetlabs-mysql (v2.1.0)
  └── puppetlabs-stdlib (v4.1.0)

但是当我尝试使用这样的 nodes.pp 文件调用模块时:

 node 'example.com' {
    include '::mysql::server'
 }

然后我得到这样的错误:

[puppet@example mysql]$ sudo puppet apply ~puppet/puppet/manifests/site.pp
Error: Could not find class ::mysql::server for example.com on node example.com
Error: Could not find class ::mysql::server for example.com on node example.com

我该如何解决?

最佳答案

Puppet 正在 .puppet 目录中安装模块 我的主目录的树,但是当该看的时候并没有在那里看 对于模块!相反,它只是在查看/etc/puppet/modules。它似乎 也就是说,默认情况下,它只看那里。如果你想让它在 ~myusername/.puppet 中查找, 您必须在/etc/puppet/puppet.conf 或其他内容中配置路径变量。

为了解决这个问题,我并没有去想怎么修改Puppet路径。 相反,我将模块显式安装到/etc/puppet/modules 使用 以下命令:

sudo puppet module install -i /etc/puppet/modules puppetlabs/mysql

一旦完成,puppet apply 命令就可以正常工作了。

进一步的实验表明,如果您执行 Puppet 模块安装 没有 -i 参数和 root 权限的命令,它将把模块安装到 /etc/puppet/modules,但如果您没有 root 访问权限,它会安装它 进入 ~myusername/.puppet/modules/。所以如果我在我原来的前面放了一个 sudo 模块安装命令如下:

sudo puppet module install puppetlabs/mysql

那就没有问题了。您不必指定 -i 参数!

整个问题的出现是因为我选择创建一个用户帐户来保存所有 puppet 的东西,而不是在 root 帐户中工作。如果我曾在 root 帐户,Puppet 会(大概)将模块安装到 /etc/puppet/modules 就没有问题了。只是因为 我创建了一个用户帐户,然后调用了 puppet 模块安装命令 没有 sudo,模块最终在 ~myusername/.puppet 中。做 puppet 新手,在 ~myusername/.puppet 中安装模块似乎不错 主意。这似乎是安装模块的明智之选, 特别是如果已经创建了一个用户帐户来管理 Puppet。

所有这些都不应该阻止您创建一个用户帐户来保存您所有的 puppet 配置文件。但是如果你这样做,记得把 sudo 放在 安装模块时在安装命令前面。

代表 OP 发布。

关于linux - Puppet 找不到我刚安装的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21580011/

相关文章:

linux - 查找mac地址的等效windows命令

puppet - 如何在Windows上使用puppet脚本设置JAVA_HOME?

powershell - 使用 MsiExec 和 Powershell 远程安装 Puppet for Windows

Linux:为什么 sed -e '1,244d' 不删除

linux - 尝试为 Cloudformation 创建/更新 bash 脚本时出现 AlreadyExistsException 错误

Python 扭曲了 Web 服务器缓存并执行过时的代码

javascript - 使用 npm node 控制台安装模块或在 package.json 中安装模块有什么区别

configuration - Puppet:不同节点上资源的关系

linux - Mantis 错误跟踪器的 Varnish cookie 问题

c - 从内核空间执行 ioctl