区分生产环境和他人的好做法是什么?

我的主要工作领域是编程,有时我必须在生产服务器上执行一些操作(当部署应用程序或configuration某些东西时…)。

所以我的问题是,我应该怎么做才能确保我不会在我的计算机/testing环境中执行生产服务器上的任何事情? 擦除一些数据库或删除日志,例如。

我想到的是一些基本的东西,比如:

  • 只有在我需要在那里完成工作的时间,才能打开生产控制台,然后closures它
  • configuration生产服务器上的控制台真的不同于其他人 – 如红色背景或类似的东西
  • 在那里每一个命令都需要额外的确认

有没有其他的规则 ,有助于保持理智,而不是搞乱生产服务器?

在防止错误和阻碍工作之间始终保持良好的界限。 尽pipe我是一个专门的pipe理员,但是我们的组织还是很小,所以实施所有额外的开销和繁文that节是不切实际的,大企业必须保证生产的安全。

除了你的规则,我们还有以下几点:

  • 从不使用相同的凭证进行testing和生产(即login,数据库),如果您无法正确收紧防火墙,则将常见错误的丢弃规则(即连接到活动前端的testing后端等)
  • 尽可能多地实施变更pipe理/版本控制,不仅在应用程序级别,而且在操作系统级别。 在这里我们使用cfengine,但是还有很多其他的select,比如傀儡,甚至可以自己发展。
  • 自动执行所有日常任务,即不应该在生产中定期删除任何东西
  • 保持一切的最新文件,不要考虑一个任务,直到它被正确logging,结合维基百科和错误跟踪系统。 每一个变化和configuration中的每一个奇怪都必须有一个“为什么”。 我知道这听起来像一个圣杯,但任何文件都比什么都没有好。

使用不同的密码 :除了不同的用户可以访问的事实之外,如果密码不一样,则不能login到生产系统数据库(并且做一些坏事 ),认为它是testing服务器数据库。

颜色编码 :这也是一个好主意,因为它很难错过。 根据主机名设置命令行提示符的颜色,并为GUI访问设置桌面背景颜色。

我这样做的主要方法正如你所说,改变背景的颜色,改变布局,使其与开发服务器显着不同。

你可以做的另一件事是将生产服务器上的密码更改为您必须考虑input的密码,这样您就意识到您正在login到生产服务器。

另一种我在其他公司使用过的方法是实际上有一种方法可以使用Web界面或批处理脚本来促进从开发到生产的工作,这样就不会在生产服务器上工作,准备好了。

规则1,如果开发者可以访问改变的东西,它不是一个生产服务器。

运行适当的版本控制(不只是一个VCS,但适当的标签)可以真正帮助这里。

我见过的一件事情是在运营networking和生产networking之间使用“中介”terminal服务器,因此在terminal服务会话期间必须对生产系统进行任何更改。 通过与testing系统不同,区别非常非常清楚。