我正在build立一些无状态的节点。 每个节点都提供相同的操作系统映像文件。 它在启动时从DHCP / DNS服务器获取主机名。 下一步是获取服务器configuration…我打算使用这个部分的木偶…. 但是在这一点上节点没有正确的证书,因为它是一个通用的操作系统映像。 第一次在networking上看到一个节点,这工作正常,因为我可以使用autosign.conf来使证书被签名和vermetic 我需要做什么来解决在networking上已经看到节点的情况,所以puppet master有一个证书…但是,服务器证书将不匹配节点上新创build的证书。 我尝试插入 allow_duplicate_certs = true 进入puppet.conf 但它似乎没有工作。 我在正确的设置? 有没有更好的/适当的方式来解决这个问题?
我试图把一个结构脚本放在一起,通过API创build一个虚拟实例,然后在该实例上运行puppet。 我有一个创build虚拟机的任务,还有一个可以“引导”虚拟机的任务。 但是,我很难将这些链接在一起,因为我不知道如何将第一个任务中生成的一些数据作为主机名传递给第二个任务。 例如 def createVM(): newhostname = local('/usr/bin/createVM') bootstrap(newhostname) def bootstrap(hostname): env.hosts = [hostname] run('puppet agent -t') 这似乎不工作,我得到提示input主机名来运行结构脚本,如果我只是执行fab createVM 。 这样做的最好方法是什么?
这是我得到的错误: ubuntu@sync1:/etc/puppet$ sudo /usr/bin/apt-get -q -y -o DPkg::Options::=–force-confold install rabbitmq-server Reading package lists… Building dependency tree… Reading state information… rabbitmq-server is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded. 1 not fully installed or removed. After this operation, 0 B of additional disk space will be used. […]
我正在使用傀儡build立一个强大的备份系统。 Dirvish有一个Vault的概念 – 一个自包含的目录,其中包含备份数据和configuration以及如何备份。 这些保pipe库可以在文件系统中的任何地方,所以你需要明确地列出它们在主dirvishconfiguration文件中。 我用木偶做的这种方式复制了有关保pipe库的信息,首先将它们创build为资源,然后将一系列保pipe库名称传递给主驱动器资源。 # Dirvish vaults, alphabetically sorted dirvish::vault { 'server-a-full': client => 'server-a', tree => '/', backup_root => $dirvish_backup_root } dirvish::vault { 'server-b-example.com': client => 'server-b', tree => '/srv/www/vhosts/example.com/backup', rsync_option => '–copy-unsafe-links', backup_root => $dirvish_backup_root } # TODO – we duplicate the vault definitions here, but I don't # see a […]
一位工程师带着一个有趣的谜题来找我。 他发现第三方模块(在这个例子中是docker)包含了一个他想用参数自定义的类,在我们的清单中的任何地方都没有被明确地引用。 然而,这个class级确实被包括在机器的目录中。 他一直在引用类中的资源(服务资源)作为他的关系和订购的一部分。 对外部类中的服务的引用是否隐式地将该类包含在目录中?
我们是一家使用Puppet进行Linuxconfigurationpipe理的中型商店。 由于我们是小商店,所以很难部署和维护DTAP环境。 我们通常在configuration更改后执行手动testing。 我想以某种方式自动化; 就像你会在软件回归testing中看到的一样。 例如,一个用例就是一个OpenLDAP集群。 我会: 我将在Puppettesting环境中的testing节点上进行更改 testing服务 如果失败,请返回到步骤1 从集群中删除一个节点 进行configuration更改 testing服务 如果失败,请返回到第5步 将节点添加回集群 testing服务 如果失败,请返回到第4步 最后,部署到其他节点 理想情况下,我想自动化testing,以便更有信心地部署更改。 任何人都可以推荐这样的事情? 最好是挂钩到木偶但不一定是要求的东西。 有关最佳做法的build议也将不胜感激。
使用Foreman 1.6.0.53附带的Satellite 6。 默认情况下,Puppetlabs的文档指出,hieraconfiguration应该在$config/hiera.yaml 。 # puppet config print confdir hiera_config confdir = /etc/puppet hiera_config = /etc/puppet/hiera.yaml 看看我们的hieraconfiguration: # cat /etc/puppet/hiera.yaml — :backends: yaml :yaml: :datadir: /var/lib/hiera :hierarchy: – users – groups – global 数据文件存在: # cat /var/lib/hiera/users.yaml — users: bfernandez: uid: 300 fullname: Belmin Fernandez 而且,为了testing它,我使用hiera的CLI和一个puppet apply : # hiera –conf=/etc/puppet/hiera.yaml –debug -h users […]
我使用puppet parser validate在git pre-commit hook中puppet parser validate ,以便在将文件提交到我们的Puppetconfiguration存储库之前发现问题。 不幸的是,这个命令似乎是一个非常轻量级的语法检查,只能标记错误,如不平衡的引号和括号。 validate命令似乎没有真正parsingconfiguration,并寻找像无效的属性,未定义的引用,等等。 例如,以下内容不会导致投诉: file { 'somefile': requires => File['some-other-file'] } 在这个例子中, requires应该是require 。 同样,这也不会产生错误: file {'somefile': require => File['file-that-does-not-exist']} 没有file-that-does-not-exist资源定义file-that-does-not-exist 。 有没有什么办法来捕捉这些types的错误,而不实际应用configuration? 我希望puppet apply命令中的某种标志可以完全parsing一个configuration而不做任何修改,但是据我所知,在Puppet 2.7.1中不存在这样的选项。 UPDATE puppet apply –noop似乎太努力在另一个方向。 它将尝试stat()清单中引用的任何文件,如果它尝试stat()当前用户无法访问的文件,通常会导致它失败并出现许可错误。 其他人在做什么?
我维护着一个不同的kickstartconfiguration库,主要是为了CentOS 5和6.它最近已经到了我想尽可能多地删除这些信息的地步。 我知道有一些可以dynamic生成kickstart文件的选项。 对这一点不感兴趣,除非我真的需要这样做。 我想用下面一行的模板创build我的Kickstart文件: deploy1-centos5.erb …. install=http://…/$arch/… repo=http://…/$arch/… …. 我的输出命名模式是“deploy1-centos5-x86_64”。 我希望能够从一个给定的模板创build几个kickstart文件,一个用于32位,一个64位,ppc等等。如果我可以随时设置每个模板被调用的arch值创build一个文件。 解决这个问题的最好的方法是什么?
我想用puppet来pipe理Unix用户。 Puppet提供了足够的工具来创build帐户并提供authorized_keys文件,但是没有设置用户密码,并告诉用户。 我所做的是一个生成随机密码并通过电子邮件发送给用户的python脚本。 问题是,用python启动passwd Unix命令是不可能的,于是我用命令写了一个bash脚本: echo -ne "$password\n$password\n" | passwd $user passwd -e $user 手动启动,脚本工作正常,创build的用户通过电子邮件发送密码。 但是当puppet启动它时,只有python脚本被执行,就好像os.system('/ bin / bash my_bash_script')被忽略。 没有错误显示。 用户获取密码,但passwd命令不会启动。 傀儡防止有什么限制来执行我所描述的? 或者,我怎样才能改变用户帐号,到期,并通过电子邮件发送密码? 我可以提供更多的信息,但现在,我不知道哪一个是准确的。 非常感谢! 编辑:这是一个基本的代码具有相同的症状: python:setuserpassword.py #!/usr/bin/python import os import sys user = sys.argv[1] mail = sys.argv[2] os.system('/bin/bash /root/tools/setuserpassword.sh '+user+' '+mail) bash:setuserpassword.sh #!/bin/bash # Password setup for the account password=`pwgen -N1 –secure 10` […]