sys*_*138 4 puppet puppetmaster
我们正在从包含所有配置的整体木偶存储库迁移。这个 repo 包含的东西不应该出现在每个节点上,因此基于 puppetmaster 的系统似乎是适当隔离事物的最佳方式。
我遇到的问题是,当复制到本地节点并puppet apply /etc/puppet/manifests/site.pp
在其上运行时,相同的 repo 可以正常工作。我们的安装运行非常干净。
当我将 puppet repo 放在 puppetmaster 上并让代理签名时,除了将它的本地目录报告给 puppetmaster 之外,它似乎没有做任何事情。
有一段时间,我无法重现执行此操作的配置,我们的一个自建模块抛出了一个错误,表明它正在尝试从本地机器的modules
目录中复制文件,而不是 puppetmaster应该喜欢。
这表明在为本地使用和通过 puppetmaster 构建存储库时,可能存在模块和清单语法差异。
如果有任何差异,它们是什么,或者转换工作的主要跳闸点是什么?
在/etc/puppet/puppet.conf
对主文件:
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
pluginsync=true
# Set up Environments
## Each environment has a dedicated 'modules' directory under /environments/ from
## which puppet will preferentially pull. Otherwise, it'll use the top level
## 'modules' directory. That is where common code goes.
[master]
manifest=$confdir/manifests/site.pp
modulepath=$confdir/environments/$environment/modules:$confdir/modules
ssl_client_header= SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY
[production]
manifest=$confdir/manifests/site_prod.pp
[integration]
manifest=$confdir/manifests/site_integ.pp
[development]
manifest=$confdir/manifests/site_dev.pp
[operations]
manifest=$confdir/manifests/site_ops.pp
Run Code Online (Sandbox Code Playgroud)
目前,site_prod.pp
文件和同类是到site.pp
.
site.pp 文件中定义的类不使用主机名。正如我所提到的,当通过puppet apply
事物运行时效果很好。如果情况更糟,我可以通过临时 NFS 挂载来做我需要的事情,但我宁愿不这样做。
site.pp
为了您的享受:
filebucket { "main": server => $server; }
File { backup => "main" }
Exec { path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }
import "stages.pp"
import "int_setup.pp"
import "nodes.pp"
Run Code Online (Sandbox Code Playgroud)
导入的 .pp 文件与 site.pp 位于同一目录中。nodes.pp
是肉在哪里,但也有秘制酱料。部分摘录:
node /clunod\-wk\d+\.sub\.example\.local/ {
class { "int_setup": stage => "setup"; }
include base
include curl
include custommodule
[...]
}
Run Code Online (Sandbox Code Playgroud)
哪个可以并且确实匹配clunod-wk01234.sub.example.local
通过 puppet apply 运行时命名的节点。
[int-setup.pp]
class int_setup {
file { "/var/cluebat":
ensure => directory,
mode => "755",
owner => "root",
group => "root";
}
group{"puppet":
ensure => present
}
}
Run Code Online (Sandbox Code Playgroud)
我知道的唯一棘手之处在于file
资源类型。
替换文件的备份行为不同,默认情况下使用服务器的文件桶而不是本地文件桶。
需要注意的更重要的事情是source
参数。
source => '/tmp/somepath/sshd_config',
Run Code Online (Sandbox Code Playgroud)
使用原始文件路径,它将始终尝试本地路径。
source => 'puppet://puppetmaster1/modules/sshd/sshd_config',
Run Code Online (Sandbox Code Playgroud)
有了puppet://server/
路径,它总是会尝试远程路径。
source => 'puppet:///modules/sshd/sshd_config',
Run Code Online (Sandbox Code Playgroud)
有了一个空的服务器规范,它就会变得有趣。
本地应用,本地puppet模块路径用于查找文件。
向傀儡主人报告时,向其提供清单的服务器被视为服务器。
此外,如果您需要对文件来源进行创意,您可以为source
参数提供一个列表:
source => [ '/tmp/somepath/sshd_config', 'puppet:///modules/sshd/sshd_config'],
Run Code Online (Sandbox Code Playgroud)
将使用找到的第一个位置。
归档时间: |
|
查看次数: |
19741 次 |
最近记录: |