我已经研究Ansible提供新的服务器,这很好。 我的播放安装MySQL,Nginx和所有其余的。 现在我想知道使用它作为configurationpipe理工具的最佳方式是什么。 我们在每台服务器上运行多个网站。 对我来说,这意味着每个服务器上的一般Nginx设置以及每个站点/域所需的特定configuration。 我记得当我需要时(我们可以说新的见解或安全性),我可以使用Ansible独立更新一般设置和特定configuration。 我需要在这种情况下做什么? 这是否需要我保留一个variables,保存所有的网站,他们在哪个网站? 或者,有更好的select吗?
过去几年来,我一直参与开发和维护近海波浪预报系统。 我们的团队刚刚获得了进一步发展的重要拨款,因此我们正在借此机会重构旧系统的许多组件。 我们也会收到一个新的服务器来运行这个模型,所以我借此机会考虑我们如何build立这个系统。 基本上,需要发生的步骤是: 某些标准软件包和库(如编译器和数据库)需要下载并安装。 一些定制的科学模型需要从源代码下载和编译,因为它们通常不作为包提供。 需要创build新用户来pipe理数据库并运行模型。 pipe理模型 – 数据库交互的一套脚本需要从源代码控制中检出并安装。 需要设置Crontabs来定期运行脚本以生成预测。 我一直在思考应用诸如Puppet,Capistrano或Fabric之类的工具来自动执行上述步骤。 除了我想知道的几个用例之外,实现大部分上述function似乎是完全可能的: 在我的初步研究中,我发现了很less的例子,并且很less讨论如何使用这些系统来从源代码构build自定义组件的过程。 我们可能必须在与Internet隔离的机器上进行部署,即所有的configuration和设置文件都必须通过USB钥匙进入,这个USB钥匙可以插入可以连接到运行模型的服务器的terminal中。 我认为这是一个学习新工具的机会,可以帮助我自动化工作stream程,但是我不确定应该从哪个工具开始。 如果任何社区成员都可以提出一个支持上述工作stream程和科学计算特有问题的工具,我将非常感激。 我们的生产服务器将运行Linux,但支持OS X将是一个奖金,因为它可以让开发团队在VirtualBox之外设置testing安装。
我们环境中的主目录使用用户名的前两个字母散列。 例如,用户lars的主目录是/home/l/a/lars 。 我想使用木偶强制在用户主目录模式0700权限,但我不知道如何定位主目录。 基本上我想这样做: chmod 700 /home/*/*/* 在没有散列的情况下,这很容易(例如使用recurse和recurse recurselimit ),但散列让我寻找一个解决scheme。 更新 :我不想列举我们的用户在puppet(因为主目录是作为我们的帐户pipe理过程的一部分创build的)。 在思考这个问题的时候,我也变得更加混乱了。 即使我们的主目录没有被散列,我怎样才能让puppet在不影响顶层目录本身的情况下对目录的内容应用权限呢? 我正在想这样的事情: file { '/home: ensure => directory, mode => 0700, recurse => true, recurselimit => 1, } 但是这会将模式应用于/home及其直接内容。 /home/lars上的模式700正常。 /home模式700是一个大问题。 这甚至有可能吗?
我有一个基于Linux的networking基础架构,由15台虚拟机和50多种不同的服务组成。 由厨师完全控制。 大部分服务都是内部开发的。 基本上当前的部署过程由shell脚本触发。 构build系统(Python和shell脚本的混合)将服务打包为.deb文件,并将这些包放入回购站。 它在所有15个节点上运行apt-get update ,然后是因为标准Chef apt Cookbook每天仅运行apt-get一次,而且我们绝对不希望在每个chef-client唤醒中无条件地运行apt-get update 。 构build系统最终在所有15个节点上重新启动chef-client守护进程(因为拉厨师本质,我们需要这一步)。 目前的过程有一些缺陷,我们要解决。 首先,它是asynchronous的,因为部署脚本在重启之后不检查chef-client日志,所以我们甚至不知道部署是否成功。 它甚至不等Chef客户完成这个周期。 其次,我们绝对不希望强制所有节点上的chef-client重启,因为我们通常只部署less量的包。 第三,我不太清楚使用chef-client进行部署是否合法,可能我们从一开始就做错了。 请分享您的想法/经验。
我在Raspbian(RPi v2)上使用了舵3.0.x,我有时会遇到一些奇怪的错误。 我试图理解此错误消息:“EVP_DecryptFinal_ex:错误:0606506D:数字包络例程:EVP_DecryptFinal_ex:错误的最终块长度”。 我正在使用WiFi网状networking通过移动networking访问互联网,所以连接并不是最好的,但我可以ping通方向舵服务器+ dns分辨率,以便在“方向舵代理更新”期间工作。 @xxx-xxxxx:~$ sudo rudder agent update 2015-07-17T16:40:44+0200 error: /default/update/methods/'update'/default/update_action/files/'/var/rudder/ncf/local'[0]: Timeout – remote end did not respond with the expected amount of data (received=0, expecting=8). (recv: Resource temporarily unavailable) 2015-07-17T16:41:14+0200 error: /default/update/methods/'update'/default/update_action/files/'/var/rudder/ncf/local'[0]: Timeout – remote end did not respond with the expected amount of data (received=0, expecting=8). (recv: Resource temporarily unavailable) ^[[B2015-07-17T16:42:36+0200 […]
我们一直在玩SCCM的应用程序目录,并遇到了一个有趣的怪癖。 我的经理已经指示我执行目录,以便在“一次性安装”和“整个工作组需要的”之间的软件指向需要它的人员数量,并将其发布到应用程序目录中。 我们的服务台技术人员可以使用App Catalog来部署这些types的软件,以根据情况select需要的用户。 我们练习帐户分离,例如,我们的帮助台rockstar Emmet Brickowski有两个Active Directory用户帐户。 他经常没有特权的帐户CONTOSO\ebrickowski 应该用在他所有的日常工作中。当UAC提示出丑的头时,他有一个特权帐户( CONTOSO\ebrickowski-adm ),它是我们所有工作站上BUILTIN \ Administrators的成员。 Joe用户打电话给服务台时,Emmet可以远程帮助用户(我们的文化在面对面的客户时间很大),用他有特权的CONTOSO\ebrickowski-adm App目录,看到一个CONTOSO\ebrickowski-adm的软件,他可以安装在一个标准化的方法为我们的用户。 除Emmet按下安装button,他得到这个: 现在我无法在客户端日志中find发生的事情。 AppIntentEval.log , AppDiscovery.log , AppEnforce.log日志和应该logging应用程序目录操作的ConfigMgrSoftwareCatalog.log都不存在。 如果我们将应用程序部署到包含我们的常规用户的用户集合,并且他们使用相同的帐户login到Windowslogin到应用程序目录安装以前失败的相同的应用程序。 这使我相信,您不能使用App目录的单独帐户作为当前的Windows会话。 这是一个无赖。 任何人都可以validation您是否需要使用相同的帐户访问您当前在Windows会话中使用的应用程序目录? 如果有什么需要进一步调查的话,logging什么? 是否有另一种或更好的方式来实现我们希望使用应用程序目录作为技术人员访问软件商店的目标?
我正在玩Rudder( http://www.rudder-project.org/site/ ),但似乎无法看到我想要的选项。 我希望所有在“节点”上的软件包都经过检查,然后进行升级,相当于Debian上的“apt-get update && apt-get upgrade”。 我看到包pipe理指令,但它们似乎都是更新/安装单独命名的包,而不是更新当前在每个节点上的所有包。 做什么是最好的方式是什么?
当我在机器上运行puppet客户端(非守护进程)时,我经常但随机地得到以下错误消息: 错误:无法创build:参数path失败:文件path必须完全限定 警告:在失败的目录上不使用caching 警告:configuration无法实例化:参数path失败:文件path必须是完全限定的 这似乎是适度清楚的意思 – 我没有一个完全合格的参数path。 但是,它不告诉我在哪里可以find这个修复它,甚至哪个参数是错误的:( (如果我使用debugging选项,它会一直工作,所以它似乎是一个清单caching的问题…这将是很好的摆脱这个生产使用,仍然) 注意:我不能一直这样做 :/
有没有办法从厨师食谱回来,没有例外? 说我有一个很长的配方。 我想添加一个ruby块开始,这将检查一些条件(例如目录存在),并停止处理这个配方(但继续执行run_list的其余部分),而不会引发exception,如果条件成功。 条件执行(only_if / not_if)不能解决问题,因为我必须将条件添加到配方中的每个资源调用中,而其中可能有很多。 在Opscode的wiki中有一个评论 ,评论者询问的是同样的答案。
阅读后有什么解决scheme允许使用服务器configuration文件的版本控制? ,我决定在我的服务器上安装etckeeper。 但是,这是一个单服务器设置,所以我只有一个物理机器,没有负载平衡器等,因为只有一个目的地路由stream量(加上我没有第二台机器做这项工作)。 我认为它仍然值得使用etckeeper,因为它跟踪本地机器。 我真正的问题是,是否值得“升级”到像木偶或厨师,因为我只有一个服务器。 如果是这样,为什么?