Articles of 木偶

木偶:组织模块依赖关系(如果包存在,则复制文件)

我有一些服务器(www等) 我有一个监控系统 如果一台机器必须被apache监控,则需要安装一些文件。 所以我有一个apache模块(安装Apache),我正在写一个monitoring模块。 只有安装了apache软件包(或者apache模块被定义,或类似的东西),这个monitoring模块才会复制所需的文件。 和mysql包一样 上述devise是一个好主意吗? 什么是这种依赖的最佳途径?

如何在多个(Linux)服务器上监视软件包版本

我们使用Puppet来安装基本级别的操作系统和软件包,但我们自己的应用程序软件包是由各个开发人员手动部署的。 我正在寻找一个networking仪表板来查看/监控所有机器上的软件包版本。 有没有人遇到过这样的事情? puppet-dashboard项目很有趣,但它提供了一个以节点为中心的视图,而我想在课堂上看到 Server 1 | Server 2 | Server 3 pkg1 v1.2 | v1.2 | *v1.3* pkg2 v.09 | v.09 | v.09 谢谢!

Puppet模板和undefined / nilvariables

我经常想在Puppet模板中包含默认值。 我希望给这样一个class: class myclass ($a_variable=undef) { file { '/tmp/myfile': content => template('myclass/myfile.erb'), } } 我可以做一个这样的模板: a_variable = <%= a_variable || "a default value" %> 不幸的是,Puppet中的undef没有在模板的上下文中翻译成Ruby nil值,所以这实际上并不起作用。 在Puppet模板中处理默认值的规范方式是什么? 我可以将默认值设置为空string,然后使用empty? testing… a variable = <%= a_variable.empty? ? "a default value" : a_variable %> 但是,这似乎有点笨重。

用Puppet安装Jenkins无法导入GPG密钥

我试图用下面的清单来安装Jenkins和Puppet。 # init.pp class jenkins { include jenkins::install, jenkins::service } # service.pp class jenkins::service { service { "jenkins": ensure => running, hasstatus => true, hasrestart => true, enable => true, require => Class["jenkins::install"], } } # install.pp class jenkins::install { include jenkins::install::repo include jenkins::install::java package { "jenkins": ensure => present, require => Class['jenkins::install::repo','jenkins::install::java'], } } […]

在傀儡中有没有办法用集合来实现虚拟资源,只有意识到?

在傀儡中,有可能通过实现function或集合来实现虚拟资源 。 我想知道是否有可能只通过实现函数来实现资源。 作为一个简单的例子,我想要跟随清单nginx没有安装,除非包含nginx_conf模块,其中包含一个隐含的nginx_conf 。 @package { 'nginx': ensure => present, } class nginx_conf { realize Package['nginx'] file { '/etc/nginx/conf.d/foo': ensure => present, require => Package['nginx'], } } exec { 'apt-get update': path => '/usr/bin' } Exec['apt-get update'] -> Package <| |> 任何想法? 一个选项就是把这个包放在一个单独的类中,而这个类是要实现它的模块所需要的,但是我想知道是否有某种方法可以在集合中select虚拟资源,只要它们被实现了,只有通过collections才能体会到他们。

从存储的configuration数据库清理cruft

我已经设置存储的configuration主要作为一种方法来pipe理我的ssh known_hosts 。 不幸的是,当我退休时,旧的configuration仍然存在于我的数据库中。 答案似乎是运行命令puppet node clean <hostname> 。 问题是,虽然这个命令确实运行,并且清理了一些数据,但似乎并没有清理所有的东西。 例如,我仍然可以在puppet_tags表中find仅适用于不再存在的主机的值。 我应该如何保持我的存储configuration数据库清理似乎正在build立的所有额外的垃圾? PS任何人都可以指向我存储的configuration模式的任何文档? 如果我能find好的文档,或者至less是一个实体关系图,我会试着做一些手工清理。

使用Chocolatey作为Puppet的包提供者

我尝试使用Chocolatey( http://chocolatey.org )作为Puppet的包提供者,但是在我的Win 7框上运行Puppet代理时,我不断得到这个错误。 info: Caching catalog for ldap-windows-vm.localdomain err: Failed to apply catalog: Parameter provider failed: Invalid package provide r 'chocolatey' at /etc/puppet/environments/beta/modules/stormaas/manifests/init. pp:9 我已经把这个模块, https://github.com/rismoney/puppet-chocolatey ,放在我的Puppet master的modules /目录中,我的pluginsync在master和slave上设置为true,而且已经使用了一些导入的types正在使用相同的设置。 通过以下方式调用软件包: package { 'stormaas': ensure => installed, provider => 'chocolatey', } 我已经尝试将提供程序设置为'巧克力'和巧克力以防万一是引号问题,并且在每次更改时都重新启动主服务器和从服务器,并多次运行代理程序以确保刷新。 正在应用于机器的模块的所有其他方面的工作 – 只是不是这个。 有什么想法吗?

傀儡apache模块导致“SERVER上的错误400:无效的参数标识符”

尝试从github( https://github.com/puppetlabs/puppetlabs-apache )使用最新的puppetlabs-apache模块时收到以下错误: Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter identifier at /etc/puppet/environments/development/modules/apache/manifests/mod.pp:40 on node cacti.mydomain.com Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping runn 我的节点configuration如下所示: 节点'cacti.eye.fi'inheritance'base'{ 包括apache 包括mysql :: server 包括yumrepos :: epel 包{'cacti': 确保=>'最新', } } mod.pp内容: 定义apache :: mod( $ […]

我怎么不show_diff当我做傀儡代理-t?

傀儡代理-t有时会显示二进制文件的差异,它会弄乱我的terminal。 我怎样才能让它不显示差异?

使用puppetpipe理(和固定)软件包版本

我有一个安装,我试图用傀儡pipe理。 对于我们想要对版本进行严格控制的一些软件包。 由于它们对于我们的应用程序至关重要,因此我们只在testing环境中进行testing后才对其进行升级,并且在低stream量时间安排升级。 我不希望puppet每当有新的软件包出现时升级我的数据库。 我指定了我的puppet清单中的版本,以防止软件包自动升级,但是当我去使用相同的configuration生成另一个实例时,该软件包的版本从Ubuntu回购中消失了。 只有最近的那些在那里。 对于一些软件包,我已经把自己打包到自己的repo中,但是封装数据库(postgresql)也被certificate是太多的开销。 任何解决scheme或想法? 我们正在使用Ubuntu 12.04.1 LTS。