有一种方法来运行一个configtest实用程序(例如apache2ctl -t)之前尝试重新启动服务,当其中一个configuration文件更改? 这里的用例是我想要在apacheconfiguration中对configuration错误进行恢复(因为apache只是在看到configuration错误时才停下来,让我停止apache)
我有一个木偶服务器运行在一个docker容器与港口8140被传递到32779 。 留下一个在localhost:32779上运行的puppet服务器。 然后编辑我的/etc/puppetlabs/puppet/puppet.conf并添加以下内容: [agent] server = localhost:32779 然后我运行puppet agent –test返回: 错误:无法请求证书:无法打开TCP连接到puppet:8140(getaddrinfo:名称或服务未知) 既然我指定了端口32779我很困惑为什么傀儡要在8140上连接呢? 是不是可以指定端口? 注意:我试图连接到运行Docker的主系统的容器。 但是,当我运行 这个docker集装箱 ,这是一个代理,似乎连接。 但是我不能直接连接。 编辑: 运行puppet agent –test –server_list localhost:32779结果在: WARN: Unresolved specs during Gem::Specification.reset: hiera (< 4, >= 2.0) WARN: Clearing out unresolved specs. Please report a bug if this causes problems. Warning: Could not select a functional puppet […]
我正在使用一个第三方模块,它使用了直到版本2.1才引入的Ruby特性。 我的运行时环境中的ruby版本是2.1.9: Debug: Facter: fact "ruby" has resolved to { platform => "x86_64-linux", sitedir => "/opt/puppetlabs/puppet/lib/ruby/site_ruby/2.1.0", version => "2.1.9" }. 所以理论上我应该没事的。 但是,当我运行木偶代理我得到 Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, undefined method `to_h' for #<Array:0xc8fd201> Array#to_h在Ruby 2.1.9上可用,所以这个错误意味着模块中的自定义函数正在使用2.1之前版本的Ruby进行评估,尽pipe我找不到其它可能使用的Ruby版本。 在2.4版之前,我已经彻底清除了任何东西的环境,只剩下Puppet内置的2.1.9版本。 这里发生了什么?
在过去的一年里,我一直在pipe理20-30个cPanel的主机,使用Puppet,Nagios和Munin进行一般的监视/趋势,但是我必须使用很多方法来部署/pipe理诸如configuration之类的东西。 对于那些不熟悉cPanel的人来说,它会为yum排除诸如perl *,ruby *等等。 这导致我能够通过Puppet(以及通过Packagetypes)在一个新的服务器上引导监视,这是由于与通过Yum安装的一堆冲突导致的问题。 现在我可以创build一个自定义的RPM的一切,并从规范文件中删除某些依赖关系,但我想避免这一点,如果可能的话。 有没有人有任何build议的function方式来pipe理这种环境? 目前我通过RPM安装Puppet,Facter和Munin,并使用–nodeps等方式强制安装(因为它们已经安装,只是没有Yum想要的)。 Nagios我现在从源手动安装(可能会创buildRPM的,但是我想先解决这个一般问题)。
我们开始使用Puppet作为在各种服务器上pipe理configuration的一种方式。 我们有一个Portage存储库,里面有几个我们自己的软件包,每台机器都使用Laymanpipe理覆盖。 在puppet中安装包很容易 ,但我们应该如何确保Layman被configuration? 那里有一个模块吗?
我有一个傀儡问题。 我需要使用“确保=>正在运行”来定义一个服务,但是它的configuration文件只能在服务停止时更改。 默认行为似乎是configuration文件更改(通过通知连接)后服务重新启动。 这是傀儡代表吗? 如果是的话,怎么样? 问候1月
我正在使用一个简单的木偶安装大量的服务器。 Puppet使用外部节点分类器从CMDB获取信息。 这完美的作品。 每次运行后,Puppet主机都会使用自定义报告模块将运行状态发布到CMDB。 这也很好。 我想让Puppet在每次运行CMDB之后发布一个节点的事实。 这样做,CMDB可以自动更新内存,MAC地址等内容 问题是; 我怎样才能做到这一点? 报告机制仅提供状态和一些指标。 编写一个自定义的storeconfig模块并不是那么容易(或者至less我找不到任何关于这个的信息)。 谢谢你的帮助。
我有这样的configuration: file { "/tmp/apc.ini": source => "puppet:///modules/uc/php/apc.ini", require => Package["php-apc"] } exec { "Add apc.ini to php mods-available": command => 'mv /tmp/apc.ini /etc/php5/mods-available/apc.ini', onlyif => "test -d /etc/php5/mods-available", require => File["/tmp/apc.ini"] } exec { "Add apc.ini to php conf.d": command => 'mv /tmp/apc.ini /etc/php5/conf.d/apc.ini', unless => "test -d /etc/php5/mods-available", require => File["/tmp/apc.ini"] } 我希望能够简化这个,使得/tmp/apc.ini文件不是每次运行puppet agent […]
所以我正在适应傀儡中不可变的variables,现在正在寻找一些build议,或澄清我是否已经走上了正轨。 我有一个目录,我想要同步,但可能有一些子目录。 所以我想build立一个或多个path的数组传递给recursion的文件资源。 理想情况下,我会有这样的事情 $paths = ['fist/path'] # assume this is provided via class parameter # this should work, since it's only overriding what was provided from higher scope if($condition) { $paths += 'second/path' } # this won't fly, since $paths has already been set once locally if($another_condition) { $paths += 'third/path' } 但我不能这样做,对,因为variables是不可变的。 到目前为止,我所提出的“最佳”方法就是这样的 […]
我使用apg为新用户生成密码 简单: $password = generate('/etc/puppet/utils/gen_password') 这个命令唯一的问题是我只需要一次,但是每次运行木偶时都会被评估。 这个variables在一个Exec声明中使用。 有没有可能,仅在必要的时候评估可扩展性? 例如,如果它是第一次使用。