我有以下Puppet清单: # PHP Configuration class php { exec { "php5enmod $module": path => "/usr/sbin", command => "php5enmod $module", } file {'/etc/php5/conf.d/upload_limits.ini': ensure => present, owner => root, group => root, mode => 444, notify => [ Exec["php5enmod upload_limits"], Service["apache2"] ], content => "post_max_size = 16M \nupload_max_filesize = 16M \n", } file {'/etc/php5/conf.d/memory_limits.ini': ensure => present, […]
我有一个脚本,只需要在服务器上运行一次,即在部署时,但是认为最好是让Puppetpipe理它。 该脚本重新映射与本地系统用户冲突的多个旧版用户标识。 我检查的方式是,如果gopher用户有默认的uid 13.如果是这样,那么我需要运行我的重映射脚本。 exec { "change_uid": command => "/script/to/run.sh", provider => 'shell', path => [ "/bin", "/sbin", "/usr/bin", "/usr/sbin", "/usr/local/bin", "/usr/local/sbin" ], onlyif => "test `/usr/bin/id -u gopher` -eq 13; echo $?", } 我已经尝试了上面的onlyif检查的几个不同的排列,但执行总是被激发的代理。 当我直接在命令行上运行这个命令时,它返回0或者1.它可能与bash 返回0时为真,1时为false的事实有关,但是我认为它更可能是我误解了这种方式作品。 当gopher的uid = 13时,我怎么能做到这一点呢? 我打开替代方法来实现我在这里要完成的事情。 UPDATE 我放弃了回声部分。 最终的工作解决scheme是: exec { "change_uid": command => "/script/to/run.sh", path => [ "/bin", "/sbin", […]
我有一个木偶大师,还有CentOs 5.4和Lenny 5.0.3客户端。 CentOs已经安装了puppet-0.25.5-1.el5,并且能够正常工作来检索文件。 Debian的盒子里有0.24.5-3的傀儡,并且失败,出现以下错误; notice: Starting catalog run debug: Loaded state in 0.00 seconds debug: Prefetching apt resources for package debug: Executing '/usr/bin/dpkg-query -W –showformat '${Status} ${Package} ${Version}\n'' debug: Puppet::Type::Package::ProviderApt: Executing '/usr/bin/dpkg-query -W –showformat '${Status} ${Package} ${Version}\n'' debug: //puppet/Service[puppet]/require: requires Package[puppet] debug: Calling fileserver.describe err: //Node[default]/File[/etc/puppet/puppet.conf]: Failed to retrieve current state of resource: Mounts […]
我在CentOS 6上安装了puppet 2.6.12。当我尝试使用命令service puppetmaster start puppetmaster服务service puppetmaster start我得到错误: Starting puppetmaster: /usr/lib/ruby/site_ruby/1.8/puppet/indirector/ssl_file.rb:142:in open: Permission denied – /var/lib/puppet/ssl/ca (Errno::EACCES). 如果我做sudo service puppetmaster start我得到错误 Starting puppetmaster: Could not prepare for execution: Could not find a default provider for user 我已经安装了ruby1.8.7,ruby-libs和ruby-shadow。 我该如何解决这个问题?
如果有一些主机存在,我想创build一个nagios_hostgroup。 要在nagios中创build主机,我使用在监视服务器上收集的导出资源。 我如何testing导出的nagios_host资源是否存在? 我尝试了以下内容: Nagios_host <<| |>> if defined(Nagios_host['host_1']) and defined(Nagios_host['host_2']) { nagios_hostgroup { 'database_servers': alias => 'My Hostgroup', members => 'host_1,host_2', } } 任何想法?
每当我尝试启动puppetmasterd服务时,我都遇到了一个问题,为此我收到以下错误消息: root@service1 ~ # -> /etc/init.d/puppetmaster start Starting puppetmaster: Could not prepare for execution: Got 1 failure(s) while initializing: change from absent to directory failed: Could not set 'directory on ensure: Permission denied – /etc/puppet/ssl [FAILED] 显然,这个bug报告中概述了这个场景的一个已知问题,但是在bug报告中它指出了selinux-policy-3.9.16-29.fc15已经解决了这个问题,但是最新的CentOS默认上游版本是3.7.19-155.el6_3.4 。 所以我试图找出最好的解决scheme。 我可以创build一个本地安全策略来允许puppetmasterd访问它所需要的,或者继续研究并在默认上行信道之外安装更新版本的selinux-policy。 任何人有任何build议? 请不要build议禁用SELinux … —–更新—– 这里是puppet.conf: [main] # The Puppet log directory. # The default value […]
我对Puppet和Solaris非常陌生,我遇到了使用Puppet在Solaris 10 VM上安装软件包的问题。 作为我的testing的一部分,我想看看是否可以在只有Java 5更新24的Solaris 10虚拟机上安装Java 6更新43.下面显示的是我遇到的问题和我的问题。 环境 Solaris版本: SunOS 5.10 Generic_142910-17 i386 木偶版本: 3.1.1 问题 看来,如果一个软件包还没有安装在Solaris上,Puppet将不会安装它。 木偶抛出以下消息: Error: /Stage[main]/Java::Jdk_solaris/Package[SUNWj6cfg]: Could not evaluate: Unable to get information about package SUNWj6cfg because of: No message 发生了什么 当puppet尝试在Solaris机器上安装一个软件包时,它会在尝试安装软件包之前运行以下命令(我在puppet运行过程中打开–debug标志时看到了这一点): pkginfo -l [whatever the package name is] 从puppet代理的例子–test – debug输出: Debug: Executing '/usr/bin/pkginfo -l' Debug: Executing '/usr/bin/pkginfo -l SUNWj6cfg' […]
我正在使用puppet agent v3.0.1(在FreeBSD上),试图连接到puppet master v3.1.1(在Ubuntu上),并且puppet代理挂起以下debugging输出: puppet agent –debug –no-daemonize … Debug: /File[/var/puppet/ssl/private_keys]: Autorequiring File[/var/puppet/ssl] Debug: /File[/var/puppet/ssl/private]: Autorequiring File[/var/puppet/ssl] Debug: /File[/var/puppet/ssl/private_keys/zg-3.XXXX.ch.pem]: Autorequiring File[/var/puppet/ssl/private_keys] Debug: /File[/var/puppet/ssl/public_keys/zg-3.XXXX.ch.pem]: Autorequiring File[/var/puppet/ssl/public_keys] Debug: Finishing transaction 17214983260 [hangs.. about two minutes..] Error: Could not request certificate: execution expired Error: Could not request certificate: execution expired puppet master被托pipe在一个虚拟机中,并通过VM主机上的端口转发进行访问。 我已经从防火墙后面的另一个节点testing了对主节点的访问,该节点正常工作。 当代理人运行时,木偶大师没有任何迹象表明已经build立了连接(虽然目前还不清楚)。 我已经检查了netcat和telnet,并确认我能够启动从代理到服务器的连接并交换数据。 同一个木偶大师已经正确运行了不同的运行Puppet v3.0.2的FreeBSD代理 […]
我决定从一个默认nodes.pp切换到Hiera后端来pipe理Puppet中的节点并将模块分配给节点。 我们使用主机名称: nyc-apache-prod-01 was-mysql-tst-01 这是我们的hiera.yaml和hierdata目录结构: # cat hiera.yaml :backends: – yaml :hierarchy: – environment/tst/%{::hostname} – environment/tst – %{::osfamily} – common :logger: console :yaml: :datadir: '/etc/puppet/hieradata' # find hieradata hieradata hieradata/RedHat.yaml hieradata/OracleRAC.yaml hieradata/common.yaml hieradata/environment hieradata/environment/dev hieradata/environment/tst.yaml hieradata/environment/acc hieradata/environment/dev.yaml hieradata/environment/acc.yaml hieradata/environment/tst hieradata/environment/tst/nyc-ks-tst-02.yaml hieradata/environment/tst/nyc-ks-tst-01.yaml hieradata/environment/prd hieradata/environment/prd.yaml 问题是环境需要在每个节点上的/etc/puppet/puppet.conf中设置为environment = tst。 我可以编写一个模块来根据服务器的主机名来做到这一点,但我不确定这是在单独的环境中组织服务器的最佳方式。 为不同的服务器configuration不同的Puppet模块,最好的办法是什么? 将特定模块添加到一组服务器的最佳方式是什么? 例如我有10个Apache Web服务器…我想拥有所有这些Apache节点,无论他们是否具有Apache模块的tst / acc / dev […]
我寻找一个解决scheme,为木偶大师的傀儡客户端创buildSSH主机密钥。 我做了一些研究,发现http://jsosic.wordpress.com/2012/12/04/managing-ssh-host-keys-with-puppet/ ,但我无法得到它的工作。 有一个更优雅的解决scheme来处理这个或完整的例子吗? 我知道可以在客户端生成主机密钥并将其备份到puppetmaster,但是我真的希望直接在主服务器上生成它们。 编辑: 我创build了一个模块“ssh”。 init.pp的内容是: class ssh :: server { 如果生成('/ etc / puppet / modules / ssh / scripts / generate_host_keys.sh', $ keys_dir){ 包括ssh :: server :: keys } } 类的SSH ::服务器::键{ file {'/etc/ssh/ssh_host_rsa_key.pub': 确保=>文件, 所有者=> root, group => root, mode =>'0644', 来源=> [ '木偶:///private/ssh/ssh_host_rsa_key.pub', '木偶:///modules/ssh/ssh_host_rsa_key.pub', ] require => Package ['openssh-server'], […]