Articles of configurationpipe

puppet环境variables$ PATH未设置

我正试图在Debian 6.0上安装一个带有puppet 2.7的模块,并且不断收到这个错误: returns: change from notrun to 0 failed: Could not find command 'tar' 这是相关的代码: file {"zookeeper-tarball": path => "${zookeeper_parent_dir}/${tarball}", source => "puppet:///modules/zookeeper/${tarball}", ensure => file, } exec { "zookeeper_untar": path => "${zookeeper_parent_dir}", command => "tar -xzf ${zookeeper_parent_dir}/${tarball}", cwd => "${zookeeper_parent_dir}", user => "$user", require => File["zookeeper-tarball"], creates => "${zookeeper_parent_dir}/zookeeper-${zookeeper_version}", } 在manifests/site.pp我有这样的: Exec { […]

有没有一种方法查看/导出Apache的当前运行configuration作为单个文件?

我在Ubuntu上运行Apache2,configuration分布在多个文件中。 是否有命令将所有正在使用的configuration数据导出到单个文件? 我想将其与另一个服务器configuration以并排的方式进行比较。

版本控制系统的结构 – configuration和脚本

我们正在计划为我们的服务器团队引入版本控制,以便我们可以保持我们的configuration文件和代码整洁。 服务器基础大部分是Windows和一些Linux,分布在几个大洲。 由于这个项目的主要目的是通过configuration脚本来控制(没有双关语意),并保持configfiles整齐。 我想知道是否有一些现有的最佳做法来构build存储库。 不幸的是,我的谷歌在这里失败了。 道歉,如果这已经被问到这里了。 我可以从两个存储库开始:“脚本”和“configuration文件”,然后创build子目录。 不过,我相信这已经做了很多次了,我不想重复别人的错误。 在“脚本”和“configuration文件”目录中是否有组织数据的良好规则? 至于源代码pipe理系统的select,我倾向于已经build立了适应多站点部署的分布式VC系统(git,mercurial)。 其他一些选项也很重要,例如:使用多个LDAP服务器(即AD域)中的组进行validation,以及使用Windows GUI客户端来请求Windows用户。

Cfengine根据variables值执行操作

在cfengine中,我有一个variables被设置为一个命令的输出。 假设variablesmyoutput被设置为“hi world”。 我如何根据myoutput的内容执行命令。 我想要做这样的事情(sudo cfengine代码): bundle agent test { vars: "myoutput" string => execresult("echo 'hi world';","noshell"); commands: myoutput=="hi world":: "/usr/bin/php myaction.php"; }

我们怎样才能确保一个没有实现的用户不在该傀儡节点中?

我们将所有用户声明为虚拟资源。 例如: @user { 'belmin': uid => 2001 comment => 'Belmin Fernandez', groups => ['sysadmins'], } 有时我们暂时realize一个节点的用户: node web1 { realize User['belmin'] (…) } 我正在研究如何确保节点中未实现的用户不在该服务器上。 首先想到的方法是在临时realize被删除时执行此操作: node web1 { User <| title == 'belmin' |> { ensure => absent, } } 但是,在临时realize的去除中,很容易被人忽略。 还有其他更优雅的build议吗?

木偶为补丁pipe理

我正在考虑使用Puppet进行大规模的补丁pipe理。 基于一些研究,这样做的方法是创build一个类并将其应用于任何需要的地方,如以下情况: class mypack_update { package { 'mypack': # ensure => '1.0.1d-15.el6', ensure => '1.0.1g-16.el6_5.7', } } 但是,这似乎是不实际的,特别是如果你有许多可用的补丁,从内核到ssl,bash等在许多机器上。 有什么最好的做法,我可以按照使这更容易? 我们主要使用的Linux发行版是SLES 11.3。

使用审批控制pipe理数千台机器

我们是一家初创企业,正在加速并遇到pipe理数百台机器的问题,不得不每晚和每周发布一次,以及pipe理他们的configuration。 这通常是一个或多个系统pipe理员的工作,但在我们的情况下,我们只需要一个就可以完成。 我们研究了诸如Puppet和Distributed Shell之类的工具,但是它们都不符合我们正在寻找的东西。 对于每台机器,都需要从源代码构build一些Linux模块,更新软件包,设置堆栈和Linuxconfiguration,从Git中下载源代码,以及自动更新数据库模式定义。 问题是,我们需要通过批准来做到这一点。 那里有没有什么工具可以让我们在执行之前执行要批准的命令? 木偶似乎是最接近我们需要的,但从源头build设似乎很难build立,并需要一个额外的端口是开放的(我们只有端口22可用)。

有一种更习惯的方式来切换基于主机操作系统的盐状态?

在我的国家档案的顶部,我有: {% if grains['os'] == 'Ubuntu' %} {% set ubuntu = True %} {% set arch = False %} {% elif grains['os'] == 'Arch' %} {% set ubuntu = False %} {% set arch = True %} {% endif %} 稍后的, {% if ubuntu %} cron: {% elif arch %} cronie: {% endif %} pkg.installed […]

如何保持一个可重复的服务器pipe理日志?

所以,当我设置一台新的Linux机器,无论是台式机还是服务器时,我总是想知道: 我怎样才能保存一个可重复的日志,logging我在机器上所做的pipe理任务,所以当它失败的时候,我可以回到相同的运行系统很快? 我知道有很多像Ansible,bcfg2,Puppet这样的configurationpipe理工具,但是感觉像在其中一种configuration语言中描述目标状态的开销对单个服务器来说太高了,特别是如果它只是我的私人机器没有关键或创收的服务。 另外,我还没有find一个很好的方式来描述一个行为,如“取消注释这行,但保留前面的行参考”在Ansible或bcfg2而不复制整个文件到我的configurationpipe理。 我目前的解决scheme是在每台机器上都保留一个“adminlog.txt”文件,并在那里写下自然语言的内容。 到目前为止,我从来没有回到那个文件,并重现所有的东西,但我确信,一旦我必须这样做,所有的链接,如“build立Dovecot按照<link> “将死亡或描述过时的版本。 在另外一个问题的评论中,我发现了一个蓝图的链接,它承诺类似于“捕获服务器的当前状态并将其存储为bash / Puppet / chef / CFEngine文件”。 其实这听起来正是我正在寻找的,但是这个开发似乎已经停止了,似乎只能在Debian或RPM发行版上运行。 我会很高兴看到其他人如何跟踪他们的pipe理任务,特别是当有多个人在同一台服务器上做东西时; 毕竟,这似乎不是这样一个奇特的要求。

saltstack:在状态和支柱中使用Python模块

我有一个自定义模块,可以在我这样的状态下使用 {% set myvar = salt['mymodule.myfunction']() %} 现在我想/需要在我的支柱中使用它。 我曾尝试以同样的方式调用它,但出现错误 Jinja variable 'salt.loader.LazyLoader object' has no attribute 'mymodule.myfunction' 有什么办法可以宣布这个模块和function在支柱上是有效的吗? 谢谢 编辑 实际的function是一个简单的正则expression式将小众ID转换成简短的forms。 我最终在Jinja的状态和支柱上实现了实际的function,并且工作。 我想在状态和支柱中使用它,以便能够加载一个.sls文件,如果它存在覆盖默认设置每个。 所以我的问题实际上已经解决了,但背后的问题是:如何拥有一个可以在状态和支柱中加载的(执行)模块,我认为还是相关的。 我可以重命名我的问题。