我工作的一些人实际上给每个Puppet环境自己的$modulepath ,但也有共同的$modulepath 。 请在下面find一个例子: [redis] modulepath = /usr/share/puppet/modules:/etc/puppet/modules:/etc/puppet/environments/redis/modules/ manifest=/etc/puppet/environments/redis/manifests/site.pp 我不确定这是否明智,但我想问一下,“这样做的正确方法是什么? 我愿意从Puppet的angular度来回答,也从总体configurationpipe理的angular度来看。 这实际上非常具体。 如果我需要一个环境的Redis模块,statsd模块和另外一个Apache模块,我可以通过设置模块path来处理这个问题吗? 我是不是该?
我正在通过Puppet部署一个ssh-default-config到我的服务器。 这在大多数情况下工作正常。 但是现在我试图将它部署到刚从Debian 7升级到8的OpenVZ系统。 现在我试图部署我的清单: Error: Could not start Service[ssh]: Execution of '/etc/init.d/ssh start' returned 1: Error: /Stage[main]/Ssh::Server::Service/Service[ssh]/ensure: change from stopped to running failed: Could not start Service[ssh]: Execution of '/etc/init.d/ssh start' returned 1: Notice: /Stage[main]/Ssh::Server/Anchor[ssh::server::end]: Dependency Service[ssh] has failures: true Warning: /Stage[main]/Ssh::Server/Anchor[ssh::server::end]: Skipping because of failed dependencies Notice: /Stage[main]/Ssh::Client/Anchor[ssh::client::end]: Dependency Service[ssh] has failures: true […]
我想覆盖目录中的一些文件: file { ensure => directory, source => 'puppet:///modules/my_module/my_directory', mode => '0600', recurse => true, } 但是,这会更改目录中每个文件的模式。 由于大多数文件(数千,每天都在变化)应该由另一个应用程序处理,我怎么能告诉木偶离开所有文件不在source ? 我不能使用ignore因为这要求我事先知道我不想pipe理的文件的名称(或至less是globs)。
我试图用木偶来复制一个文件: 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 我假设傀儡将作为根运行,因此将能够复制文件。 有没有办法做到这一点,而不改变权限?
傀儡服务就是这样定义的 service { 'some-service': ensure => running, hasrestart => true, hasstatus => true, require => [Service['someotherservice'], File['/var/log/somefile']], } 这不会为enable设置一个值。 什么是enable默认值? 文档没有提到如果省略,会发生什么情况。
我认为在Puppet中还没有一个正确的方法来处理(但是),但是这样做让我感到满意。 我希望我的课程能够影响另一个课程中的模板文件的内容,这样我们就可以避免重复信息,并将信息放在其所属的位置。 比如我们有一个“iptables”类,以及各种服务类,比如“postfix”,“webappfoo”等 class webappfoo { $myfwrules +> [ "-A INPUT -p tcp –state NEW -m tcp –dport 80 -j ACCEPT" ] include apache } node webappserver { include webappfoo include iptables } 但是这是行不通的。 $ myfwrules数组只包含webappfoo中的那一行。 请注意,一个类可以读入另一个类; 例如在这里iptables可以只读$ iptables :: myfwrules; 但我不希望iptables必须了解webappfoo。
嗨:我试图在Ubuntu上configurationPuppet,奇怪我永远不能生成证书,因为我的服务器从不显示任何挂起的证书请求。 换句话说,在服务器上我正在运行puppetmasterd,在客户端上,我可以连接到服务器,但客户端继续打印 notice: Did not receive certificate warning: peer certificate won't be verified in this SSL session 而服务器却从来没有看到这个请求 mrisher@lab2$ puppetca –list [nothing shows up] mrisher@lab2$ puppetca –sign clientname.domain.com clientname.domain.com err: Could not call sign: Could not find certificate request for clientname.domain.com 编辑:有一个build议自动签名正在发生,但似乎并不是这样。 没有autosign.conf文件,并且当我运行puppetmasterd –no-daemonize -d -v我收到以下输出:info:每次客户端提示时都找不到“clientname.domain.com”的证书。没有收到证书 我检查了服务器上的证书,似乎没有任何: mrisher@lab2:~$ puppetca –list –all mrisher@lab2:~$ sudo puppetca –list […]
我可以理解,根据http://docs.puppetlabs.com/guides/language_guide.html我可以传递一个数组的定义。 define php::pear() { package { "`php-${name}": ensure => installed } } php::pear { ['ldap', 'mysql', 'ps', 'snmp', 'sqlite', 'tidy', 'xmlrpc']: } 但是,有没有办法让我可以通过多个数组来做同样的事情? 例如,如果我想安装一些梨库,有些缺席,我可以这样做吗? define php::pear($ensure) { package { "`php-${name}": ensure => $ensure } } php::pear { ['ldap', 'mysql', 'ps', 'snmp', 'sqlite', 'tidy', 'xmlrpc']: ensure => ['installed', 'installed', 'absent', 'absent', 'installed', 'installed', 'installed'] } 首先,是这样的可能,还是有更好的方式做这样的multidimensional […]
我已经inheritance了一个包含include语句的模块 include '::module::config' 但在编辑了一些似乎是不相关的东西之后,这已经不起作用了,傀儡抱怨说: err: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class ::module::config at /home/user/svn-workspace/puppet /user/modules /module/init.pp:28 on node host.acme.com 除非我将其更改为: include 'module::config' 然后它再次开始工作。
我想安装没有二进制包(deb,rpm)的源代码包。 如果该模块已经安装在该机器上,我该如何停止模块的执行? 我在用着: Exec { creates => "${zookeeper_path}/zookeeper/bin/zkServer.sh" } 然而所有其他的块无论如何都被执行。 什么是最好的方法? 检查几个文件的存在? 当傀儡检查更改时,我不想解开和重新编译所有模块。 编辑: 安装过程由几个步骤组成: 取tar.gz包 解压缩包 创build几个configuration文件 创build服务 确保服务正在运行