Articles of 木偶

木偶 – 在另一个类中重新启动一个服务

我对Puppet比较陌生,但是到目前为止,我认识到它是一个非常强大的工具。 举一个简单的例子,假设我有一个模块“ntp”在模块ntp我有三个类: class ntp – 从发行包提供程序安装包,设置启动服务的信息等 class ntp :: client – 创buildconfiguration文件以使用本地ntp服务器,停止ntp,强制ntpupdate并启动ntp服务 class ntp :: server – 创buildconfiguration文件,使我的本地ntp服务器,停止ntp,强制ntpupdate(在初始configuration),并启动ntp服务 我不确定如何使ntp类中的服务定义可用于ntp :: client和ntp :: server类。 我正在使用事实来基本处理不同的操作系统以及软件包和服务名称。 为了避免混乱,我把这个放在了我的例子之外。 而不是在每个类中有如下的东西: service{ 'ntp': name => $ntpservice, ensure => running, subscribe => File['ntpconf'], } package{ 'ntp': (etc – I think the point has been communicated) 我认为在ntp类中定义服务并在类ntp :: client和ntp :: server的类ntp中调用该服务会更简单,更简单。 基本上,由于多个平台(基于RHEL和Debian),软件包和服务可能略有不同。 […]

版本控制工头和木偶

我刚刚安装了工头,我不知道如何去把我所有的configuration在版本控制。 我知道我可以使用Git来安装我在Puppet master上的每个模块,但是更喜欢一个更全面的解决scheme,它不仅包含模块,还包含与每个主机相关联的类以及主机上设置的任何variables。 任何build议将不胜感激与相关的工作stream程。 如果是相关的,我将GitLab设置为现场的中央Git服务器,并计划尽快安装一个CI服务器,如Jenkins。

傀儡权限问题在客户端上报告

err: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': Error 400 on SERVER: Not authorized to call search on /file_metadata/plugins with {:ignore=>[".svn", "CVS", ".git"], :recurse=>true, :checksum_type=>"md5", :links=>"manage"} err: /File[/var/lib/puppet/lib]: Could not evaluate: Error 400 on SERVER: Not authorized to call find on /file_metadata/plugins Could not retrieve file metadata for puppet://example.com/plugins: Error 400 on SERVER: Not […]

木偶:如何覆盖/重新定义外部子类(详细的用例和示例)

我试图说明的用例是什么时候声明某个项目(eq mysqld服务)与默认configuration,可以包含在每个节点(class stripdown在这个例子中,basenode),仍然能够覆盖这个相同的项目一些特定的类(例如mysql :: server),被特定的节点(如myserver.local) 我用下面的例子说明了这个用例,我想在所有节点上禁用mysql服务,但是在特定的节点上激活它。 但是当然,Puppetparsing失败,因为Service [mysql]包含两次。 当然,mysql :: server类没有任何关系,可以作为剥离类的子类 有没有办法来覆盖服务[“MySQL”],或将其标记为主要的,或者其他? 我正在考虑虚拟物品和实现function,但它只允许多次应用物品,而不是重新定义或覆盖。 # In stripdown.pp : class stripdown { service {"mysql": enable => "false", ensure => "stopped" } } # In mysql.pp : class mysql::server { service { mysqld: enable => true, ensure => running, hasrestart => true, hasstatus => true, path => "/etc/init.d/mysql", […]

通过傀儡代理人强制通过傀儡变化,通过主人?

是否有可能发出一个命令从主木偶,节点,运行代理和应用最新的configuration呢? 就像我已经失去了一个用户的密码,我无法login,但puppet代理安装在服务器上,我可以通过运行木偶代理应用在服务器上的变化,但由于它没有自动运行,我无法login手动运行它,如何运行它并通过puppet master应用configuration? (如果可能的话)

木偶包“确保=>最新”并不总是工作

我有一个独特的情况,木偶包ensure => latest指令只适用于我的一些系统。 在30台服务器中,软件包在除了4之外都能正确更新。我试图将软件套件的主要版本从9.40降低到9.50。 我可以指定一个硬的水平,但我会遇到多架构通配符问题 。 清单代码片段: # Install packages $spppackages = [ "hp-snmp-agents", "hpssa", "hp-health", "hp-smh-templates", "hpsmh", "hpssacli", "hponcfg", ] package { $spppackages: ensure => latest, require => Yumrepo['HP-spp'], } 集体地位: mco package hp-snmp-agents status Summary of Ensure: 9.50-2564.40.rhel6 = 14 9.50-2564.34.rhel5 = 9 9.40-2506.37.rhel6 = 4 <== This is what I'm trying to […]

如何使用puppet启用systemd实例化服务?

我有以下傀儡服务: service { "[email protected]": provider => systemd, ensure => running, enable => true, } 当我尝试在我的客户端上应用此configuration时,会引发以下错误: err:/Stage[main]//Node[puppetclient]/Service[[email protected]]/enable:从false更改为true失败:无法启用[email protected]: 该服务运行良好,我可以确保它通过添加一个符号链接到getty.target.wants启动系统启动: ln -s /lib/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected] 在源文件中,我可以继续,从服务定义中删除“enable => true”,并在puppetconfiguration中手动添加符号链接,但是不应该由木偶来处理? 我在做一些非常错误的事情吗?

PuppetDB:无法提交“replace事实”命令

我最近撤销/清理了Puppet代理证书,这似乎对PuppetDB有负面影响。 我看到一个错误已经在这里提交了一些解决这个问题的指令。 用户在这里有一个类似的问题,但是这些都没有为我工作。 服务器运行CentOS 6.2,Puppet 2.7.13和Puppet DB 0.9。 错误是: root@harp:/etc/puppetdb/ssl> puppet agent –test err: Cached facts for harp failed: Failed to find facts from PuppetDB at harp.mydomain.com:8081: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed. This is often because the time is out of sync on the server or client info: Loading […]

通过木偶定义哈希循环

我传递一个哈希来定义像这样: nodes.pp net::addr { 'routes': ipr => { ipr1 => { address => '192.168.34.38', netmask => '255.255.255.0', gateway => '192.168.34.1', dev => 'eth3', }, ipr22 => { address => '10.1.5.33', netmask => '255.255.255.0', gateway => '10.1.5.1', dev => 'eth2', }, } } addr.pp define net::addr ( $routes={}, ) { if ($num != "") { $iname=${routes[route${num}][dev]} […]

使用Puppetpipe理服务密码

我在Puppet中设置了我的Baculaconfiguration。 我想要做的一件事是确保每个密码字段是不同的。 我目前的想法是用主机名散列一个秘密值,以确保每个文件守护进程都有一个唯一的密码,并且该密码可以写入导向器configuration和文件服务器。 我绝对不希望使用一个通用密码,因为这可以让任何可能危害一台机器的人通过Bacula访问任何机器。 除了使用散列函数来生成密码之外,还有其他的方法吗? 澄清: 这不是关于服务的用户帐户。 这是关于身份validation令牌(使用另一个术语)在客户端/服务器文件。 示例代码片段: Director { # define myself Name = <%= hostname $>-dir QueryFile = "/etc/bacula/scripts/query.sql" WorkingDirectory = "/var/lib/bacula" PidDirectory = "/var/run/bacula" Maximum Concurrent Jobs = 3 Password = "<%= somePasswordFunction =>" # Console password Messages = Daemon }