远程分布式的系统管理团队可以提供全天候的覆盖,而无需任何人熬夜,并且受益于从全球人才库中汲取人才。OpenStack 全球基础设施团队依靠这五个开源工具进行沟通和协调我们的工作。
我们还添加了一些额外的条件
- 我们必须公开地完成我们的工作
- 我们为不同的公司工作
- 我们必须为我们所做的一切工作使用开源软件
以下五个开源工具使我们能够在满足这些目标的同时,保持高效的团队运作。
1. 基于文本的聊天
我们使用 Internet Relay Chat (IRC),由 freenode IRC 网络提供,该网络运行在开源 Internet Relay Chat 守护程序 (IRCd) 上。有大量的开源客户端可用于连接它。我们的团队频道(在 IRC 术语中是聊天室)是我们团队的灵魂。我们讨论正在进行的问题和挑战,提出解决方案,相互告知正在进行的更改,发布项目状态更改和警报,并有一个机器人报告提交到我们基础设施以供审查的更改。我们使用的 IRC 频道是完全公开的,我们维护一个服务器,在该服务器上提供频道日志,任何人都可以查看。
以下是某天早上频道快照
<clarkb> hrm no world dump on that failure? <openstackgerrit> Anita Kuno proposed openstack-infra/storyboard: Add example commands for the Timeline api https://review.openstack.org/337854 <openstackgerrit> Victor Ryzhenkin proposed openstack-infra/project-config: Add openstack/fuel-plugin-murano-tests project https://review.openstack.org/332151 <clarkb> its definitely an io error of some sort <clarkb> possibly run out of disk space? <therve> The df output looks normal... <greghaynes> or, is it writing out to tmpfs?
这需要一些时间来适应,但是一旦您熟悉了频道的流程以及与团队的合作方式,这些对话和日志就成为了跟上我们工作的宝贵资源。您可以通过阅读 VM (Vicky) Brasseur 的两篇文章 IRC 入门 和 IRC 快速入门指南 来了解更多关于 IRC 的信息,从命令到礼仪指南。
有时,快速语音通话对于高带宽通信很有价值,因此我们也运行一个 Asterisk 系统来支持 IP 语音 (VoIP) 通话。
在公司或其他组织内部运行私有 IRCd 很常见。有各种开源选项可用;在选择适合您需求的选项时,请考虑项目活动和安全记录。如果您的团队尝试过 IRC,但更喜欢具有更现代的界面和功能的工具,例如即使在您未直接连接时也内置于界面中的日志,您可能需要研究 Mattermost,它是专有 SaaS 消息传递的替代方案,您可以在 Charlie Reisinger 关于他的组织如何 用 Mattermost 替换 IRC 的文章中了解更多信息。
2. Etherpad
Etherpad 是托管的协作文本编辑器,允许一个小组实时共同编辑文档。我们的团队将这些用于各种目的:协作处理发送给整个项目的公告、分享想法、讨论我们面对面聚会的议题和主题、编写维护和升级计划,以及在维护窗口期间完成任务。
Etherpad 的使用通常与我们在 IRC 和邮件列表上的协作密切相关,使用 Etherpad 作为记录长期存在的异步笔记的地方,同时我们更广泛地直接相互讨论事情。我们在我们的基础设施中使用开源的 Etherpad Lite。
3. Pastebin
Pastebin 允许您粘贴大量的文本,并返回一个 URL,您可以轻松地与团队成员共享。对于我们的团队来说,这意味着能够与没有服务器访问权限的团队成员共享日志片段,共享配置文件,以及共享尚未记录的任务执行说明。我们更喜欢 pastebin 而不是在 IRC 频道中粘贴大量的文本,或者对于更适合只读的文本使用 Etherpad 的开销。
有几个开源选项可以运行您自己的 pastebin。我们目前正在使用我们 自行维护 的 LodgeIt 版本。提示:如果您正在运行公共 pastebin,请使用 robots.txt 文件来阻止搜索引擎索引它们。很少有有价值的可索引数据,如果数据未被索引,这将有助于阻止垃圾邮件发送者访问您的 pastebin。
4. GNU Screen
正式名称为终端复用器,GNU Screen 允许您在屏幕终端会话中运行一个命令或多个命令,并在您注销后保持应用程序运行。如果我们要运行一个罕见的、长时间运行的、手动触发的命令,而该命令在失去连接时会失败,例如重新索引我们的代码审查系统或执行某些升级,这尤其有价值。我们团队中的许多人也使用它来保持他们的 IRC 客户端 24/7 运行。
最有趣的是,我们使用 GNU Screen 会话来培训我们团队的其他 root 成员关于我们尚未自动化或记录的系统管理任务。系统上的多个用户可以同时附加到一个屏幕会话,以进行协作终端会话。然后,我们可以引导团队新成员了解我们密码库的访问权限,或者分享罕见或复杂的维护任务的程序。它还具有内置工具来记录整个会话的日志。
虽然它对我们有效,但有些人批评 GNU Screen 在现代功能方面有点不足。也存在替代方案,例如 tmux 和 Byobu。
5. Git
Git 是由 Linus Torvalds 发明的,用于管理 Linux 内核开发。Git 现在是开源项目的首选版本控制系统。系统管理团队应该对其基础设施的所有更改使用某种版本控制,这可能是不言而喻的,但这对于分布式团队尤其重要。由于我们的团队跨越时区,因此很难赶上八小时的讨论。使用 Git,您可以通过阅读提交日志来查看对系统所做的所有更改,并了解是谁更改了内容。
它还使我们能够更轻松地回滚到之前的状态,或者至少查看在可能造成破坏性更改之前存在的先前状态。当更正式地记录更改以供团队消费时,提交历史记录还使我们能够有效地描述进行了哪些特定更改以及原因。
提示: 始终确保在您的提交消息中包含为什么进行更改。我们通常可以通过阅读提交本身来弄清楚更改了什么,但是理由可能更难在更改发生后追踪到,尤其是在几个月后,很少有人记得。
要了解有关 OpenStack 基础设施以及我们用于支持 OpenStack 中庞大开发社区的其他工具的更多信息,请访问 OpenStack 项目基础设施文档。
1 条评论