Puppet 移动权限为 400 的文件?

Puppet 移动权限为 400 的文件?

我正在尝试使用 Puppet 复制一个文件:

  file{ '/root/.ssh/id_rsa' :
    source =>  'puppet:///modules/certs/.ssh/id_rsa',
  }

权限是-r-------- 1 root root

如果我运行chmod +r该文件,我的脚本可以工作,但由于上述权限,puppet 无法复制该文件。

错误:/Stage[main]/Main/Node[default]/File[/root/.ssh/id_rsa]:无法评估:无法检索 puppet:///modules/certs/.ssh/id_rsa 的文件元数据:服务器上的错误 500:服务器错误:权限被拒绝 - /etc/puppetlabs/code/environments/production/modules/certs/files/.ssh/id_rsa

我假设 puppet 将以 root 身份运行,因此能够复制文件。有没有办法在不更改权限的情况下做到这一点?

答案1

错误消息表明您正在使用主/代理设置。在这种设置中,Puppet 主服务器(或服务器)通常在用户下运行,puppet因为它是一个仅提供文件和目录供下载的 Web 应用程序。

只有 Puppet 代理(在客户端上)将以 root 身份运行以对操作系统进行配置更改。

用户应该能够读取 Puppet Master 上的文件puppet,方法是更改​​所有权:

chown puppet id_rsa

或授予组读取权限:

chgrp puppet id_rsa
chmod g+r id_rsa

或给予其他读取权限,就像你对 所做的那样chmod +r

请注意,对文件的访问有有限的授权控制。任何拥有有效 Puppet SSL 密钥/证书的主机都可以从 Puppet 主机下载文件,即使它们没有配置清单/文件。这不是一种非常安全的分发私钥的方法。

相关内容