我有木偶的代码,我无法去工作: schedule { 'daily_once': period => daily, repeat => 1, } node 'puppet1' { tidy { '/opt/puppetlabs/server/data/puppetserver/bucket': age => '5w', recurse => true, rmdirs => true, backup => false, schedule => 'daily_once', } tidy { '/opt/puppetlabs/server/data/puppetserver/reports': age => '5w', recurse => true, rmdirs => true, backup => false, schedule => 'daily_once', } } 每当puppet代理运行时,整洁的资源仍然保持执行。
我想在由Puppetpipe理的Linux系统上设置一个环境variables,以包含当前运行的分支puppet的$environment 。 它需要从任何地方和系统的任何用户是一个系统级variables – 我试图尽可能避免任何forms的文件系统tomfoolery。 基本上我希望能够读取其他代码中的这个variables,并将其包含在它创build的日志中。 理想情况下,我正在寻找一个跨平台的答案,但CentOS / RedHat具体将是一个很好的开始。 编辑:我想避免在/ etc /下有一些随机文件,每次我在日志中写一行时都需要读取。 我在发布后不久就考虑过使用profile.d。 问题是很多服务不加载configuration文件,即使我使用了一个片段,如果我进行更改,也需要重新读取configuration文件。
我已经在我的木偶大师身上设置了rrd报告+图表,我的节点按预期报告,我可以看到“变化”和“时间”图表,但是我错过了“资源”(html和每周每月每年图表)元素。 注意resources.rrd文件存在,只是puppetmaster不生成html和png
我可以在傀儡仪表板Web GUI中查看“正在失败”的节点,甚至可以查看哪些策略已经出错。 我也可以看到节点是否不报告。 有什么办法可以把这些失败作为电子邮件提醒吗?
我们都知道( 在SF上的很好的例子 ),木偶主机名检测可能是…乐趣。 在我们公司(我想我们并不孤单),我们通常在我们的办公室预先configuration服务器,并在将设备带到远程数据中心并对其进行架设之前对其进行testing。 当然,即使我们不更改系统的实际主机名,反向dns也会改变。 我们正在慢慢起草我们的傀儡设置,我想确保这些举措不会造成问题。 我的想法是在服务器提供时(在第一个木偶运行之前)在puppet.conf中显式configuration系统的完整FQDN作为certname 。 我的过程看起来像这样: 基本的os安装 基本的networkingconfiguration,足以到达互联网和解决DNS 安装puppet并设置certname 开始傀儡,让他pipe理整个configuration testing,修复configuration(通过木偶)的问题,重新testing,等等… 手动停止木偶 为数据中心networking设置新的networkingconfiguration 将机器移至DC 打开它 木偶应该自动启动并继续工作 通过检测木偶的清单中的环境(例如基于子网,就像他们在维基媒体中所做的那样 )并根据需要修改configuration(例如,适合每个networking的resolv.conf内容)来支持该过程。 每个节点的certname在整个系统生命周期中都不会改变。 这种方法有什么问题吗? 可以改进吗?
鉴于访问由puppet企业pipe理的单个节点,我想查看puppet正在pipe理的资源列表。 我怎么做? Node OS是Ubuntu 14.04。 对PE版本2,3和2015有兴趣。 谢谢!
我想用下面的docker文件作为学习puppet的基础。 它的写法是运行一些傀儡命令,然后立即退出。 我试图了解容器告诉自己要closures的位置,以便我可以修改它以保持运行。 Dockerfile如下: FROM ubuntu:16.04 MAINTAINER Gareth Rushgrove "[email protected]" ENV PUPPET_AGENT_VERSION="1.8.3" UBUNTU_CODENAME="xenial" LABEL org.label-schema.vendor="Puppet" \ org.label-schema.url="https://github.com/puppetlabs/puppet-in-docker" \ org.label-schema.name="Puppet Agent (Ubuntu)" \ org.label-schema.license="Apache-2.0" \ org.label-schema.version=$PUPPET_AGENT_VERSION \ org.label-schema.vcs-url="https://github.com/puppetlabs/puppet-in-docker" \ org.label-schema.vcs-ref="a2b1fbbc73177ddc3def23d167f9beb9c3ef9f6c" \ org.label-schema.build-date="2017-02-21T17:25:14Z" \ org.label-schema.schema-version="1.0" \ com.puppet.dockerfile="/Dockerfile" RUN apt-get update && \ apt-get install –no-install-recommends -y wget ca-certificates lsb-release && \ wget https://apt.puppetlabs.com/puppetlabs-release-pc1-"$UBUNTU_CODENAME".deb && \ dpkg -i […]
所以,我已经玩了一段时间了,我已经设法让我的site.pp文件设置和工作方式我想要的时候,我手动运行木偶,我开始继续前进找出客户端/服务器的问题。 我正在我的开发盒上运行一个小虚拟机,试图与我的主箱上的puppetmasterd同步,但有问题。 首先 – 插件/事实同步似乎根本没有工作 – 我试图打开更多的auth.conf,但我觉得我越来越危险地接近我的configuration暴露给全世界。 节点的事实似乎并不存在。 我试着看官方文档如何正确设置,但我感觉大部分是写在0.25.0之前。 任何人都有任何想法来debugging这个特定问题的来源? 这些是我在错误日志中看到的错误: Sep 16 22:12:59 support puppetmasterd[2800]: Not authorized to call search on /file_metadata/facts with {:ignore=>[".svn", "CVS"], :links=>"manage", :recurse=>true} Sep 16 22:12:59 support puppetmasterd[2800]: Not authorized to call find on /file_metadata/facts Sep 16 22:13:00 support puppetmasterd[2800]: Host is missing hostname and/or domain: **hostname of my virtual […]
我似乎遇到了在多种环境中使用木偶的两种方法: 1)在每个环境中安装puppetmaster,只准备在该环境中部署配方时更新该环境的源代码pipe理的配方。 2)使用一个puppetmaster,并在每个客户端的puppet.conf中使用一个variables来指定环境,然后在puppetmaster中为每个环境指定一个不同的模块path,并且每个path都被更新到配方库的分支,环境(如开发,分期,生产)。 只有运行一个木偶大师似乎是一个less运行的基础设施,但是在configuration上还有一些额外的复杂性。 这些方法之一还有其他的优缺点吗?或者我完全错过了什么?
在我的Puppetconfiguration中,我想说“如果我声明类X,在Y类之前应用它的资源。 换句话说,我想要声明一个顺序,但对于是否应用类X保持沉默。 如果我正确理解“之前”的元参数,并说: class X { … before => Class['Y'], } class Y { … } node N { include Y } node M { include X include Y } 将在节点M和N上包含X和Y的资源。相反,我想要分别表示“只应用Y”,或者“应用X和Y,并在Y之前应用X. 对于上下文,我想要更具体地做的是确保我的Yum存储库在Puppet应用程序包资源之前进行configuration。 我想省略一些节点的一些存储库。 我希望我的包资源定义对于相应的存储库保持天真。 我不想乱丢我的包资源定义与依赖于特定的存储库。 我尝试使用运行阶段,但超出最简单的configuration,他们似乎导致依赖周期。 例如,这将工作: stage { 'first': before => Stage['main'] } class X { … before => Class['Y'], } class Y { […]