我使用Puppet挂载Cloudfuse来访问Rackspace的Cloudfiles,但是在一个新的主机上,尽pipe我需要整个class级,mount仍然运行得太快。 在Pro Puppet中 ,Jamesbuild议像这样分割类定义: class cloudfuse{ include cloudfuse::install, cloudfuse::service, cloudfuse::config } class cloudfuse::install{ # download and install } class cloudfuse::config{ file{'/root/.cloudfuse': notify => Class['cloudfuse::service'], } } class cloudfuse::service{ service{'cloudfuse': ensure => running, } } 这工作得很好。 当我准备挂载时,我需要顶级的父类,像这样: exec{'mount /data/cloudfiles': command => "/usr/local/bin/cloudfuse /data/cloudfiles", require => [ File['/data/cloudfiles'], Class['cloudfuse'], ] } 问题是: 这是惯用的吗? 我在别处见过,所以我会说。 我应该实际上需要cloudfuse::install而不是父级? 我知道需要cloudfuse::install会解决我的问题,但如果我有一个非常简单的类,也许我不会像这样分裂三个,那么我不得不猜测/看清单知道如何声明依赖关系。
这是我的/etc/puppet/puppet.conf一个片段 [main] modulepath = /etc/puppet 当我尝试在init.pp文件中使用此path时,出现错误 etc/puppet/modules/fangs/manifests# puppet apply init.pp err: /Stage[main]//File[/tmp/test]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/fangs/files/sample.txt at /etc/puppet/modules/fangs/manifests/init.pp:7 notice: Finished catalog run in 0.05 seconds 这是我的init.pp文件的内容 file { '/tmp/test': ensure => file, mode => '0777', source => "puppet:///modules/fangs/files/sample.txt", # source => "/etc/puppet/modules/fangs/files/sample.txt", } 当我使用注释源source => "/etc/puppet/modules/fangs/files/sample.txt",以完整的文件path而不是puppet:// modulepath运行。 […]
木偶或厨师是否支持复制的puppetmasterd / Chef服务器? 对我而言,这些工具似乎很令人惊讶,但这些工具会强制单点失败,但在他们的文档或Google中我一直没有find任何提及。 我知道Puppet和Chef可以在没有服务器的情况下运行(可能用git更新,如http://bitfieldconsulting.com/scaling-puppet-with-distributed-version-control中所述 ),但是这看起来像是第二代可能会失去一些监控能力。
我有一个小的虚拟Linux服务器(500兆内存)。 我最终可能会得到一两个服务器,而不是更多。 我是一个开发人员,而不是系统pipe理员,所以我不知道涉及Linuxpipe理的最佳做法。 我知道我不想安装一台机器,发出一堆命令来设置用户,安装软件包,更改环境variables,只是在我的机器崩溃时丢失所有这些命令。 我宁愿将所有这些信息与我的代码一起保存在源代码库中。 明显的解决scheme是傀儡或厨师,但我不运行一组机器。 我想要一个声明的方式来设置用户,安装软件包等,但不想设置SSL证书,主服务器等(坦率地说,我不能,我的机器很便宜,只有很less的内存)。 有没有更好的解决scheme的立式机器? 我希望能够快速使用这个解决scheme来重新创build我的机器(在亚马逊,林德,rackspace或我的倒台)。
我公司正在考虑采用Puppet来pipe理我们的基础设施。 我们听说Puppet不像其他解决scheme(如CFEngine)那样高效。 有没有人有任何关于一个Puppet服务器可以支持多less节点的硬数据? 是否有关于此的大小或最佳实践文档? 到目前为止,我找不到任何关于木偶3的东西。 编辑更多细节。 我们正在考虑从三个物理位置分布的4000个节点开始,并计划在这些位置扩展到多达10k个节点,并跨越公共云提供商。 我们对这些节点使用CentOS 5和6。 傀儡是这个的正确工具吗? 我应该计划多less个傀儡pipe理员来pipe理4000个节点?
在puppet中执行命令之前是否有办法将消息打印到控制台? 例如,假设我的清单具有: exec { command => 'mycommandhere' } 我想打印一个消息,说'运行我的命令'。 有没有一个简单的方法来做到这一点,除了打印出来之前调用另一个命令?
我使用Puppet来安装ufdbGuard,它需要Squid 2.7(这是正确安装和正常工作)。 这里是相关的课程: class pns_client::squid { package { 'squid': ensure => present, before => File['/etc/squid/squid.conf'], } if $::ufdbguard_installed == "true" { $squidconf = 'puppet:///modules/pns_client/squid.conf_ufdbguard' } else { $squidconf = 'puppet:///modules/pns_client/squid.conf' } notify{$squidconf:} file { '/etc/squid/squid.conf': ensure => file, mode => 644, source => $squidconf, } service { 'squid': ensure => running, enable => true, hasrestart […]
有没有办法让木偶大师自动接受客户的所有证书(所以我不必每次都在木偶上傀儡)?
我有一套我们的服务器的通用木偶配方。 其中一个puppetpipe理的文件是/etc/crontab ,包含原始的cron.daily , cron.weekly和cron.monthly条目。 这里常见的/etc/crontab文件的问题是,所有的cronjob都在同一时间运行在我们所有的服务器上。 例如,每日备份消耗所有备份服务器资源,因为所有服务器都在同一时间进行备份。 在服务器之间每天/每周/每月运行的确切分钟随机化的首选方法是什么?同时仍然保持所有服务器之间的木偶配方通用? 我一直在想几个不同的select: 在实际工作之前运行sleep & $RANDOM 。 通过这种方式, crontab在每个主机上都是相似的,但是运行每日/每周工作的确切时间会有所不同。 即使在同一个服务器内部也会有变化(例如每天的运行间隔可能在23-25小时之间变化)。 从主机名计算整数值,并使用+“基于主机名的整数”分钟运行所有作业。 有点哈克,但可能工作… 其他一些方法,但是什么?
我试图得到这样的东西在我的Puppet清单中工作: if $hostname == 'host1' || $hostname == 'host2' { # Modified config.txt for portrait mode. file { '/boot/config.txt' : ensure => present, mode => '0755', source => 'puppet://puppet/files/boot/config.txt.portrait', } } else { # Normal config.txt for landscape mode. file { '/boot/config.txt' : ensure => present, mode => '0755', source => 'puppet://puppet/files/boot/config.txt.landscape', } } 但是,这失败了。 […]