我知道木偶如何帮助设置服务器等,但你会使用木偶的东西: apt-get update && apt-get upgrade 我感觉答案是否定的,如果是这样的话,你会build议做什么样的自动化过程来完成这些任务? 所以说我正在build立一个新的实例(代理)连接到木偶,我怎么能包装在服务器上运行的多个命令只是为了准备连接到木偶主机之前呢? 我希望我可以只写出一个文件中的所有命令,然后以某种方式运行此文件。 对于像: apt-get update && apt-get upgrade 安装ruby,其他库 基本的服务器locking等
我们正在研究一个configuration/系统pipe理实现的过程,我们已经做了很多Puppet的演示。 木偶似乎擅长在一些简单的“确保此软件包已安装,此configuration文件存在,并且此服务正在运行”。 我似乎无法find一个pipe理不太好的软件的现实世界的例子。 一些例子: IBM DB2(通过包含安装程序的tarball进行分发,“fixpacks”类似) Simpana CommVault(使用带有ncurses接口的安装程序,但如果被连接,将接受“答案”文件) AccuRev(二进制安装程序,支持“答案”文件) VMWare工具(二进制安装程序) Puppet用户采用什么方法将这种软件整合到他们的环境中?
这是有道理的,事实上在这个网站上build议,有一个关键的文件更改触发服务重新启动木偶元参数(如通知或订阅)。 例如: ## file definition for printers.conf file { "/etc/cups/printers.conf": [snip], source => "puppet:///module/etc/cups/printers.conf" } ## service definition for sshd service { 'cups': ensure => running, subscribe => File['/etc/cups/printers.conf'] } 但是在CUPS的情况下,这会触发无尽的重启循环; 逻辑工作是这样的: 更改puppetmaster版本的/etc/cups/printers.conf 傀儡大师推出新版本的客户端,触发杯子重新启动 cupsd重启坚持把自己的时间标记在printers.conf的顶部,“由cupsd写…” 这个改变将被视为过时,所以在运行runinterval之后,我们返回到(1)。 有没有办法来压制cupsd的时间戳文件的需要? 还是有木偶戏可以帮助吗? 谢谢!
我有一对夫妇Splunk服务器,我通过puppetpipe理部分configuration。 这些都在CentOS 6盒子上。 我的定义是成立的 file{ "/opt/splunk/etc/apps": recurse => true, purge => true, force => true, source => "puppet:///modules/splunk/$hostname/apps", ensure => present, mode => 755, owner => splunk, group => splunk, notify => Service["splunk"] } 这很好,但我想排除/opt/splunk/etc/apps/myapp/local/savedsearches.conf保存的search文件被覆盖和/或自动更新包含在Puppet中的副本与版本保持本地服务器。 有没有现成的方法来做到这一点? 我查看了文档,没有看到任何东西。
我已经阅读了关于范围的文档,但是我仍然无法解决这个问题。 我有两个非常相似的环境 – 所以我得到了: 模块/ django的-ENV /舱单/ init.pp class django-env { package { "python26": ensure => installed } # etc … } import "er.pp" 模块/ django的-ENV /舱单/ er.pp $venvname = "er" $venvpath = "/home/django/virtualenvs" class er { file { "$venvpath/$venvname" : ensure => directory } # etc … } class er-dev { include er } […]
在类中定义依赖关系时,每个Package可以全局定义一次。 我有configuration的层次结构,一些软件包应该安装在所有机器上(进入默认configuration),但其他应该只安装在某些类别的机器上。 当Puppet威胁是重复的声明时,我该如何检查这个包是否已经在机器上? Duplicate declaration: Package[wget] is already declared 我应该使用这样的function吗? if defined( Package[$package] ) { debug("$package already installed") } else { package { $package: ensure => $ensure } } 我期望从configuration工具默认处理这个问题…我错过了什么?
有没有办法使用傀儡或厨师食谱,而不发射守护进程等? 我希望能够解释文件并在没有任何繁重工作的情况下应用它们。 如果没有,是否有替代产品,可以用来设置任意东西,如灯栈没有足迹?
克隆和脚本安装有什么不同(使用Kick-start / Puppet)? 我读了很多亲脚本的安装意见,由于硬件不断变化,克隆被认为是不可靠的方法。 在我的情况下,硬件是相当统一的,因为我们使用相同的供应商,即使它改变,努力适应克隆的图像设置(我使用SystemImager),并不是很困难。 它也快得多,大约需要5分钟,而对于20-30的脚本安装(当然没有本地镜像),并且能够捕捉很难编写脚本的小数位(例如MySQL DB保护)。 但是,克隆技术仍然会从我读到的东西中得到很大的回响,所以任何人都可以分享他的观点和经验,如果我有必要将我们的部署基础架构改为脚本安装? 提前致谢!
我注意到,当我在exec上使用user选项时,它不占用指定用户的环境。 $ sudo -i puppet apply -e "exec { '/usr/bin/env': logoutput => true, user => nobody}" notice: /Stage[main]//Exec[/usr/bin/env]/returns: SHELL=/bin/bash notice: /Stage[main]//Exec[/usr/bin/env]/returns: USER=root notice: /Stage[main]//Exec[/usr/bin/env]/returns: USERNAME=root notice: /Stage[main]//Exec[/usr/bin/env]/returns: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games notice: /Stage[main]//Exec[/usr/bin/env]/returns: MAIL=/var/mail/root notice: /Stage[main]//Exec[/usr/bin/env]/returns: PWD=/root notice: /Stage[main]//Exec[/usr/bin/env]/returns: HOME=/root notice: /Stage[main]//Exec[/usr/bin/env]/returns: LOGNAME=root notice: /Stage[main]//Exec[/usr/bin/env]/returns: executed successfully 所以当命令以nobody身份运行时, USER , HOME等没有按预期设置。 有没有什么办法可以让exec来模拟一个loginshell,这样的环境是按预期设置?
我有一个傀儡class,如果我有以下代码: class A { require B …. } 我得到循环依赖错误。 如果我有: class A { include B …. } 一切正常