Articles of 木偶

pipe理/版本化主机特定的脚本(* nix)

目前我们正在使用Puppet(在SVN中有清单和相关文件)来pipe理我们的* nix主机的configuration。 不过,我碰到了一个令人困惑的问题。 我们的许多主机都具有特定于主机的脚本 – cron作业,数据挖掘脚本,dynamic生成configuration文件的脚本等。我正在寻找一种方法来pipe理这些脚本,特别是对它们进行版本化,并允许一个相对简单的恢复解决schemeif主机重build,而不改变现有的布局。 我似乎无法find对我们的环境“有效”的解决scheme。 我们在文件系统的任意位置都有脚本。 特别是考虑到这些应用程序中的某些应用程序的年龄,移动位置不是一种select 大多数开发人员都有一个就地编辑工作stream程。 这是不可能改变的。 SVN没有解引用符号链接的方法,所以我不能只创build一个链接到脚本和版本的目录。 开发人员无法访问Puppet回购。 这需要在现有的文件系统权限内工作,即用户只能修改他们有权访问的脚本,而不能修改其他脚本。 我想最简单的方法来解释我在找什么是我想要但不存在: SVN处理符号链接(即符号链接所有configuration到一个目录,然后正常工作,并让他们版本) SVNpipe理主机上给定的path或目录列表的一个简单方法,但保持不变。 有什么build议么?

报告通过SSL在Puppet-Dashboard中自动注册

在软件版本为puppet-server 0.25.5和puppet-dashboard 1.0.4的情况下,我有一个function完整的puppet-dashboard实例,并自动注册新的检入报告。 但是,在虚拟主机报告上启用SSL后,自动注册将不再发生。 我已经validation,从用户的angular度来看,该网站否则正常工作。 我改变了我的puppet_dashboard.rb文件中的PORT定义,并没有收到任何显示连接失败的日志等。 任何人都可以提供指导如何最好地debugging,或解决这个问题?

木偶variables

我试图在我的模块manifest.pp中使用variables运气不大 class mysoftware($version="dev-2011.02.04b") { File { links => follow } file { "/opt/mysoftware": ensure => directory } file { "/opt/mysoftware/share": source => "puppet://puppet/mysoftware/air/$version", recurse => "true", } } 当我通过nodes.pp文件将其分配给一个节点时,这似乎不起作用。 我正在运行木偶2.6.4木偶客户端是0.25

是否有像木偶或厨师可以pipe理主机之间的依赖关系?

厨师/傀儡是pipe理各个主机configuration的好工具,但是当主机之间存在依赖关系时,它们似乎略有下降。 例如,我想有一个Web服务器configuration,试图启动一个应用程序,但只有当数据库已经启动(在另一台主机上)。 是否有一些类似的工具,允许指定跨越主机的configuration,还是有一些额外的厨师或傀儡,使这成为可能?

使用本地文件作为傀儡模板

我是一个java软件的开发人员,并试图find一个聪明的方式来让我的应用程序在我们的数据中心分布和configuration。 为此,我build立了一个rpm包,并且build立了一个卫星。 目标操作系统是Red Hat Enterprise。 对于configurationpipe理我们使用木偶。 到现在为止,一切运行良好。 我们根据puppet中的节点configuration来设置数据库连接string和主机名。 这些进入erb模板文件,我们也有木偶大师。 但现在,我需要修补一个属于RPM的单个文件。 这是一个在构build时生成的文件,每个构build都会随之更改,所以我们不喜欢把它放到傀儡中。 有一个标识符(自由select,如<%baseURL%>)。 不幸的是,我们需要在这个文件中设置一个基本的URL,这取决于它所在的节点。 我想将我们的文件作为.erb存放在RPM中,但似乎puppet不能使用目标系统的本地文件作为模板,在我看过的所有例子中,模板都位于puppet master上。 另一个问题是,如果程序包被更新或baseUrlconfiguration发生变化,则必须从模板转换为真正的configuration文件。 我想利用这个木偶模板,但我不知道这是否工作。 我目前的解决scheme是:我使用木偶在/ etc / myapp / webstart_baseurl中的每台机器上创build一个依赖于节点的文件。 看起来像: MYAPP_WEBSTART_BASEURL=http\\:\\/\\/10.12.1.42\\/myapp_ws\\/ export MYAPP_WEBSTART_BASEURL 然后,我写了一个shell脚本,包含在我的RPM中。 这放在/usr/bin/patchHostnameForWebstart.sh中 #!/bin/sh #the file where to load the baseUrl from (in property $MYAPP_WEBSTART_BASEURL) MYAPP_WEBSTART_SERVERCONFIG=/etc/myapp/webstart_baseurl MYAPP_JNLP_TOKEN=@@myapp.webstart.baseurl@@ if [ -f $MYAPP_WEBSTART_SERVERCONFIG ] then source $MYAPP_WEBSTART_SERVERCONFIG echo "found config for […]

木偶重启服务两次 – 可以修复吗?

当服务描述既ensure => running并订阅configuration文件的变化,如果两个条件都满足(即它没有运行,configuration文件改变)它得到(重新)启动两次 。 有没有办法让它只启动一次? 为了澄清,我有以下types: service { "puppet": ensure => running, enable => true, hasrestart => true, subscribe => File["/etc/puppet/puppet.conf"], } # service 当两个 /etc/puppet/puppet.conf被更改,服务木偶没有运行时,我在puppet输出中看到以下内容(使用–debug指定): …. debug: /Stage[main]/Puppet/Service[puppet]/subscribe: subscribes to File[/etc/puppet/puppet.conf] notice: /Stage[main]/Puppet/File[/etc/puppet/puppet.conf]/content: content changed '{md5}c39350dd1e135cf9fffd14ff167d6655' to '{md5}845a4aac5e83ab3f8cd9efd80ce17772' …. info: /etc/puppet/puppet.conf: Scheduling refresh of Service[puppet] debug: /etc/puppet/puppet.conf: The container Class[Puppet] will propagate my refresh […]

puppetforge模块的木偶包提供程序?

使用木偶,你可以使用各种“提供者”在你的系统上安装“包”。 有内置的yum,apt,gems等提供者 有没有“傀儡模块”软件包提供商或类似的? 为了重新使用来自http://forge.puppetlabs.com/的傀儡模块,我正在下载这个版本,将它解压到我自己的源代码库中,并将其添加到我的源代码中。 这并不理想 – 我希望能够在不复制的情况下重新使用模块。 有没有更好的办法? 我希望能够使用傀儡本身来安装和使用木偶大师的傀儡模块。 这将使得使用/升级模块更容易,并且允许在更高的抽象级别上工作。 我想可能是鸡蛋问题 – 傀儡可能会难以validation我的清单,如果它们包含尚未安装的资源,但也许这可以绕过使用阶段?

自己的木偶function

我正在努力做出自己的function。 我不断收到这个消息。 err:无法从远程服务器检索目录:SERVER上的错误400:函数“brent_k”在节点XYZ.com上的/etc/puppet/modules/munin/manifests/init.pp:17中未返回值 这是我简单的代码 xyz.com:/etc/puppet/modules/munin/lib/puppet/parser/functions# cat brent_k.rb module Puppet::Parser::Functions newfunction(:brent_k, :type => :rvalue) do |args| val = 'ok' val end end 然后在我的清单中,我有 $a = brent_k() 我也尝试过return val 。 我怎样才能解决这个问题?

木偶语言configuration文件编辑

我正在尝试使用syslog-ng为日志服务器和客户端创build一个木偶配方。 我知道我可以使用模板erb文件自定义configuration文件,并replaceerb文件中的某些variables。 我也知道file资源只是从源代码或模板中replace文件。 但是,我的问题是,每个客户端将有不同的要求和不同数量的文件被redirect,大多数客户端不使用系统日志API来logging他们的信息,所以我必须指定每个客户端上的每个应用程序的文件名,继续添加东西到服务器的conf文件。 我在puppet中找不到任何types的循环function,可以帮助我在现有的syslog-ng.conf文件中生成或添加信息。 我所看到的只是file资源将取代现有的file资源,除非我用exec来做一些聪明的事情。

如何编写可重用的傀儡定义?

我想编写一个puppet清单来在目标服务器上安装和configuration应用程序。 这个清单的一部分应该是可重用的。 因此我使用define来定义我的可重用function。 这样做,我一直存在这样的问题,即定义的一部分不可重用。 一个简单的例子是一堆要创build的configuration文件。 这些文件必须放在同一个目录下。 这个目录只能被创build一次。 例: nodes.pp node 'myNode.in.a.domain' { mymodule::addconfig {'configfile1.xml': param => 'somevalue', } mymodule::addconfig {'configfile2.xml': param => 'someothervalue', } } mymodule.pp define mymodule::addconfig ($param) { $config_dir = "/the/directory/" #ensure that directory exits: file { $config_dir: ensure => directory, } #create the configuration file: file { $name: path => "${config_dir}/${name}" content […]