当涉及到生产networking服务器时,系统pipe理员和开发人员的职责是什么? 具体来说,我正在考虑更新/安装软件。 (根据我的理解,开发者不应该在生产服务器上拥有root权限)
所以一个生产networking服务器正在运行Wordpress,它需要更新到最新版本。 谁负责保持更新?
如果开发者在应用程序上有自定义黑客插件或自定义核心文件(在本例中为WP)呢?
我发现在大多数情况下,如果你是负责物理服务器的人,最好不要给开发者root权限。
这是一场“神圣的战争”辩论,因为我相信你会发现不同意的开发者。 我个人一直在辩论的双方。
我没有给开发者(即使是100%可信的开发者)的根访问的主要原因是因为他们需要一些包来使XYZ正常工作。 他们继续前进并安装它,或者重新configuration已经存在的东西,这样它就可以工作…或者…呃…你明白了。
几个月过去了……服务器需要重新安装或重新创build……突然间没有人知道为什么“它在旧服务器上运行,而不是新服务器”。
答案当然是你正在看的文档不包括开发者为了使系统第一次工作而做的所有那些小软件包和调整。
这对于双方来说都是一个痛苦的问题,但是如果系统pipe理员负责服务器,软件包和文档……而开发人员则负责开发和软件……我认为,最后会发现它是值得的。
如果开发者需要一个自定义的插件,模块,configuration,调整…没问题…为他们做…但文档,所以你可以在下次重现。
黄金法则 :不要让非pipe理员接触任何你不想破的东西,而你将要负责任的东西。
Devs应该可以访问testing环境。 一旦他们的工作准备好投入生产机器,就应该交给系统pipe理员。 如果开发者已经完成了他们的工作,并且正确地logging了这个过程,那么一切都会顺利的。 如果不是的话,他们需要背着背部踢,因为没有足够的testing。
我也参加了这场战斗。 我的答案是,谁负责服务器的正常运行时间是谁应该负责所有的更新,更改等等。否则Nobodoy应该有能力在服务器上执行这些types的function。 如果您的工作是确保服务器正常运行,并且老板认为您对服务器负责,那么您有责任维护和保护服务器。
大多数开发人员会告诉你,他们需要pipe理员级别访问服务器,他们中的大多数人会不同意我的观点,但是我必须在凌晨2点重新启动它,必须在重build后一个失败的更新,停机时间对我的部门等等。我必须回答CIO的任何影响我们的SLA的事情,所以我是唯一一个获得服务器pipe理员权限的人, m负责所有组件,更新,更改等
我100%同意。 Dev大部分时间都不知道syadmin是如何工作的。 如果他们需要什么,他们会问你,就这些。 你考虑如何以及何时向你提供一个可用的软件包。 (就像他们需要发送电子邮件,你是谁的gonaconfiguration后缀)。 而且,他们会倾向于认为,在大多数情况下,根访问将使事情工作,如果他们无法正常访问。 我同意这里的其他人,他们不会在凌晨2点和你在一起的时候遇到问题。 几个星期前我有这种情况,开发者想更新他的wordpress。 我告诉他RTF changelog,对他来说,这是无用的,更新过程是通过一个漂亮的界面。 那么更新不起作用,我保存了他的应用程序,我做了备份脚本不是他。 没有我,他不能够恢复该网站。 所以要注意这些事情,我们花时间来设置策略(chroot,备份,configuration),这就是为什么我们在这里(我们喜欢它:)和开发不应该干涉这些事情(回报凯撒什么属于凯撒)
有一种趋势是模糊开发和运营之间的区别。 让您的开发人员系统pipe理员和您的系统pipe理员开发人员。
从这个意义上说,WordPress可以从一些关于博客的自动化(和程序化)挑战的工作中受益。 许多WordPress用户维护多个WP / WPMU实例,并及时更新它们至less是麻烦的。
您可以在Agile 2009的敏捷基础架构幻灯片中find一个好的(有趣的)概念
开发人员不应该在生产上扎根; 除开发人员之外,每个人都同意这一点。 但是开发者可以把他们的蛋糕也吃掉。 我有些惊讶,没有人明确提到这一点:
我的一个很长时间的小企业客户有一个Drupal安装的网站,几个WordPress站点,一个SMF论坛,以及一些其他的小型networking应用程序。 我是合同系统pipe理员(由于历史原因,还需要更新/攻击WordPress和SMF),我的客户有他自己的合同Drupal开发人员。 该环境是公共云提供商上的多个VMware虚拟机。
开发人员确实想拥有root权限,并且需要它。 例如,编写nginx重写规则来完成所有定制的Drupal工作是他们的责任。 但是我不能让他们在生产服务器上进行root访问,我的客户也同意这一点。
所以我们做了妥协:他们在testingWeb服务器上获得了根访问权限(除了IP地址,它在同一个云中,通常与生产相同)。 像生产一样,有了etckeeper,所以我可以看到他们需要做的任何变化以及他们安装的任何软件包。 然后,我可以将这些变化转化为生产,或者告诉他们他们想做什么是错的。 如果他们真的搞砸了(他们还没有,谢谢gawd),我可以轻松地恢复他们的变化。
他们根本无法访问生产数据库服务器; 他们甚至没有用户login。 只有我的客户和我做。
(Web应用程序本身,他们直接部署与GIT,如果他们打破了,他们得到解决它,并向我的客户解释为什么他们应该继续做他的开发人员。虽然我的客户会CC我这样的电子邮件,所以我可以嘲笑他们或facepalm。)
根==系统pipe理员。
用户==开发人员,DBA或用户。
当服务器closures时,Root知道没有睡眠,Root保护自己的用户,Root保护用户的数据,Root把服务器的健康放在所有的用户之上。 当服务器离线时,根的屁股在线。 服务器开心,开心快乐!
计划外停机时间的常见原因:用户,未logging的环境变化和反铲挖掘机。 服务器完全按照他们所说的去做,而不是随意破坏。 黑客你问,它不是如果,它的时候…因此需要一个“根”。
00:33 CDT你知道你的备份和灾难恢复文件在哪里吗? 😛
系统pipe理员应该有pipe理员权限(就像标题所说)。 没有人需要访问生产服务器。 如果开发人员需要排查生产系统中的问题,那么在开发环境中应该可以重现该问题。 如果不是,他们可以坐在系统pipe理员身边,查看系统。
开发人员不喜欢不能触摸生产,但这不是工作。 有一份工作就是编写软件并将其交给系统pipe理员进行产品发布。 如果他们已经logging了一切(并记住,在大多数商店文档是一个肮脏的话)正确的,那么释放应该罚款。
在美国的公共公司,你们有SOX,HIPPA等来处理。 这些神圣的规定大部分实际上有助于这个论点。 SOX规定职责分离,要求开发人员在生产系统中保持closures。