我安装了puppet 4.3和centos7来使用Puppet Device来pipe理Cisco路由器。 服务器主机名是“puppetmaster”(通过运行hostnamectl puppetmaster )centos服务器正在运行puppet master和agent。 设置好所有东西后,configurationdevice.conf当我运行sudo木偶设备–debug我看到这些错误: Error: /File[/opt/puppetlabs/puppet/cache/devices/r1/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get local issuer certificate for /CN=puppetmaster] Error: /File[/opt/puppetlabs/puppet/cache/devices/r1/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get local […]
基于这个博客和评论中的一些代码,我试图为Puppet定义一些简单的CPAN安装function,我试着这样做: class perl { define install-cpan () { exec { "cpan_load_${name}": command => "perl -I.cpan -MCPAN -e '\$ENV{PERL_MM_USE_DEFAULT}=1; install $name'", cwd => "/root", path => "/usr/bin:/usr/sbin:/bin:/sbin", unless => "perl -M$name -e 1", } } package { 'perl': ensure => installed } } perl::install-cpan { "Bundle::CPAN": } 但是我得到这个错误: err: Could not retrieve catalog from remote server: […]
在Debian上,我使用pserve为Pyramid应用程序编写了一个简单的初始化脚本。 我不是100%肯定它是完整的/正确的,但是现在可以工作: DAEMON="/home/project/.virtualenvs/project/bin/pserve /home/project/production.ini" PIDFILE=/home/project/project.pid USER=project GROUP=project CWD=/home/project LOGFILE=/home/project/project.appserver.log case "$1" in start|stop|restart|status) echo "$1 project app server: " cd $CWD $DAEMON $1 –pid-file=$PIDFILE –user=$USER –group=$GROUP –log-file=$LOGFILE RETVAL=$? if [ "$RETVAL" -eq "0" ]; then echo "Success" fi ;; *) echo "Usage: /etc/init.d/project {start|stop|restart|status}" exit 1 ;; esac exit 0 当我以root身份login时,我可以运行以下内容而不会出现问题: ~# service project start […]
我目前有5个FreeBSD服务器,我正在处理我自己的。 我刚买了10台服务器,我想开始使用像Puppet这样的集中式configuration系统。 我想知道是否有任何其他的替代傀儡? 它有什么缺点吗?
我已经从puppetlabs的.dmg中安装了puppet 3.0.1。 如果我删除ruby1.9.3,木偶工作,但其他像我的vim安装(依赖插件)不。 根据http://docs.puppetlabs.com/guides/platforms.html#ruby-versions 1.9.3的支持。 那么傀儡怎么了? % uname -a Darwin Kusanagi.local 11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64 % which ruby /usr/local/bin/ruby % ruby –version ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin11.4.2] % /usr/bin/ruby –version ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0] % brew info ruby 1 ↵ ruby: stable 1.9.3-p327, […]
我正在使用Apt模块( https://forge.puppetlabs.com/puppetlabs/apt ),并为Debian wheezy backports存储库添加了一个条目: apt::source { 'wheezy-backports': location => 'http://ftp.de.debian.org/debian', release => 'wheezy-backports', repos => 'main', include_deb => true, include_src => true, notify => Exec['apt-get-update'], } 我可以成功安装wheezy-backports中可用的软件包,但不能在默认存储库中安装,因此我认为configuration本身是正确的。 使用apt-get install git -t wheezy-backports安装从backports手动安装apt-get install git -t wheezy-backports也可以。 但是,我如何强制Puppet从wheezy-backports而不是默认的存储库检索一个包? 具体来说,我想安装在wheezy backports中的git-1.9.1-1 package { "git": ensure => "1:1.9.1-1~bpo70+2", } 失败。 package { "git": ensure => "latest", } […]
在CentOS 6.4和6.3上,我看到puppet经常使用低于32768的端口。这与内核分配端口的设置是相反的: cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000 我的无状态防火墙阻止示例木偶进程: ruby 24488 root 3u IPv4 1844198 0t0 UDP 172.16.10.156:13346->172.16.10.2:domain 我想解决这个问题,以便能够在无状态防火墙中select一个不需要“世界可写”的范围。 编辑:木偶版本3.1.1和Ruby 1.8.7
设置 我们有一个安装了MySQL v5.1.73(innoDB存储引擎)和puppet-dashboard version 1.2.23的Debian Linux。 正如您可能猜到的那样,puppet-dashboard使用MySQL作为其后端。 另外,它不应该是相关的,但是这是vSphere 5.5上的VMware虚拟机。 问题 问题是,尽pipe傀儡节点的数量和运行频率保持不变,但MySQL使用的磁盘空间仍然以令人不安的方式增加,直到现在成为问题。 下图说明了这个问题。 我们已经放置了两个应该允许释放磁盘空间的cron作业。 他们是以下,每天运行: 耙RAILS_ENV =生产分贝:原始:优化 耙RAILS_ENV =生产报告:修剪:孤立upto = 3单位=星期一 你可以在图中看到的滴是运行的cron作业,并占用更多的空间,试图释放一些空间。 MySQL二进制日志未启用。 此服务器上使用的磁盘空间的95%位于存储MySQL数据的目录/ var / lib / mysql / dashboard_production中。 我们之前已经有了一个不同的应用程序(Zabbix监控)的这个问题,不得不转储数据库,并重新导入,以释放空间。 这是一个非常痛苦的过程,不是一个非常优雅的解决scheme,但它最终奏效了。 有什么办法可以回收这个磁盘空间吗? 我们能做些什么来阻止这种行为? 编辑1 我们的确在使用innoDB,我们没有使用configuration指令“innodb_file_per_table”。 按照Felix的要求,命令的输出如下: +———————-+——————-+————-+ | table_schema | table_name | data_length | +———————-+——————-+————-+ | dashboard_production | resource_statuses | 39730544640 | | dashboard_production […]
我试图在CentOS主机上用Puppet插入一段文本到我的CA证书文件中。 之前我问过这个问题,看来CentOS在证书pipe理function方面非常缺乏 。 我需要做的是将相当大的文本代表我的CA证书(通过openssl的info命令通过无论何种原因传递)到我的/etc/ssl/certs/ca-bundle.crt文件中,并确保它始终存在即使主机稍后从回购站更新其CA文件。 我不想用Puppetpipe理整个ca-bundle文件。 这已经被服务器所指向的yum库所处理。 难度:Puppet没有正式的方法来pipe理文本块,只有行,使用file_line资源。 不过,我试图变得聪明,认为你可以使用一个换行符的“文本行”并对其进行pipe理。 那么,有点。 它的工作原理是,文本在文件中结束,但是问题在于,在每个puppet运行之后,它会一直重新添加,就像代码不能说明它已经存在一样。 有关详细信息,大块的文本看起来很像这样(截断显然的原因:3) $cacert = "Certificate:\n Data:\n Version: 3 (0x2)\n Serial Number:\n 10:d8:83:91:-redacted-" 我的Puppet模块中的行如下所示: class em_cacerts::centos inherits em_cacerts{ file_line { 'ca-certificate': path => '/etc/ssl/certs/ca-bundle.crt', line => $cacert, #match => "(see below)", ensure => present, } 我已经尝试了所有types的match线(包括使用inline_template将匹配正则expression式设置为$cacertvariables的完整内容,在IRB中完美地工作,但在Puppet中却不行),试图使认识到文本块已经存在,但它不断重新添加,每次只是堆叠在自己的顶部.. 我可能在这里咆哮错误的树,但无论如何,这是问题的一部分。 有没有更好的方法来实现这个目标? 如果没有,我怎样才能让Puppet实现文本块已经存在? 谢谢!
我有些尴尬地通过Puppet无意中删除了多个重要数据的TB,我只是想明白为什么会发生这种情况。 首先,我很确定它的消失的原因(除了通过备份之外,不可恢复)是: File { backup => false } 在我的网站。 这些节点被设置为通过NFS来挂载某些东西,所以挂载点/挂载以及fstab中的一行如下所示: nfsserver:/mount /mount nfs <options> 0 0 我想摆脱装载,并用一个符号链接replace到相同的最终位置(虽然不同的path)。 我的木偶清单看起来像这样: class symlinks::linkdirtest ( ) { file { '/mount': ensure => "link", target => "/anotherdir/mount", } mount { "/mount": ensure => "absent", } } 做傀儡跑时,得到以下结果: notice: /Stage[main]/Symlinks::Linkdirtest/File[/mount]: Not removing directory; use 'force' to override 所以,我适时(或愚蠢地)补充说: class symlinks::linkdirtest ( […]