几年前,当我攻读图书馆学硕士学位时,我选修了一门关于 Unix (Solaris) 系统管理的课程。这门课程本应包括在一台 Sun 工作站上设置 Web 服务器,从全新、裸机的 Solaris 操作系统安装开始,逐步构建起来。
听起来很棒,对吧?我当然是这么想的,但是在课程开始后,教授被告知要放缓节奏,因为大学里级别较高的人担心学生管理的机器可能会被黑客入侵,部门将对此负责。课程进行了修改,我们必须通过登录教授完全控制的工作站来完成一些较小、不太复杂的任务。我们没有安装 Apache 和 PHP,但我们确实解决了一些有趣且具有挑战性的问题。尽管这门课程最终的效果还不错,但与如果我们被赋予管理自己机器的自由相比,它仍然只是一个苍白的模仿。
自从我上那门课以来,技术方面发生了很大变化,并且由于新的学年即将开始,我认为现在是时候看看现代系统管理课程的作业应该是什么样子了。学生的第一次系统管理经验应该带有安全网吗,这样当他们犯错时就不会出现太多的安全问题?或者课程应该尽可能地真实,即使这被认为是危险的?我强烈倾向于“真实”的一面,并且我将分享一个以这种方式教学的优秀例子。如果您有不同的想法,请在下面的评论区分享。
真实的系统管理作业
Tom Clark 来自 奥塔哥理工学院 今年早些时候在 Linux.conf.au 上做了一个演讲,提供了一个现代、真实的系统管理课程的优秀例子。课程内容根据 Clark 的三个主要教学原则进行呈现:
- 做一些事情比仅仅谈论它更好。
- 使用一致的开发主线,使主题相互构建,并使第一天的课程在最后一天仍然相关。
- 真实性,包括真实的任务、真实的工具和真实的评估。
这三个想法渗透到课程中,并用于为学生提供真实的、实践性的学习体验。
学习体验
学生在为期 16 周的课程中,使用真实工具学习实用技能。为了支持他们的系统,学生通过使用 RT 和 MediaWiki 学习使用支持票据和文档。为了部署和维护他们的系统,他们学习使用 Puppet 进行配置管理,使用 Nagios 进行系统监控,以及使用 Bacula 进行备份和恢复。但是,广泛的概念比我刚才提到的具体软件包更重要。重点是学习配置管理,而不是接受 Puppet 使用培训。Clark 使用的软件是因为它对他有效,但该软件是灵活且可更改的。
主要项目涉及学生两人一组部署、维护和支持 ownCloud 的部署。他们负责按时部署并保持系统运行,在两周内最大限度地减少停机时间。在此期间,Clark 充当用户和经理,打开支持票据。在他的用户角色中,他请求帮助重置密码和其他基本任务。作为经理,他请求配置更改、新的 Nagios 检查和其他管理任务。学生应及时处理问题,记录他们的流程并有效地沟通。
除了打开支持票据外,Clark 还通过故意破坏事物来给学生制造困难。他拥有所有服务器的 root 访问权限,因此他只需登录并调整一些东西,例如关闭 MySQL。在项目的某个时候,Clark 会做一些残酷的事情——基本上是模拟真实世界的黑客攻击,删除重要文件并破坏网站。他说,为了“最佳学习体验”,他会在凌晨 3:00 左右这样做。
评分基于正常运行时间以及学生处理支持票据和其他问题的能力。Clark 使用他自己的 Nagios 实例来监控正常运行时间,并查看他们的票据日志和 Wiki,以了解学生处理问题和团队合作的情况。然后,他与学生面对面会面,讨论他们的表现。
我自己的学生经历很糟糕,因为有人担心一群学生可能会搞砸并给部门和/或大学带来问题,即使搞砸是学习过程的一部分,而且我们的工作站被黑客入侵的机会也很小。另一方面,Clark 的学生可以体验到他们在现实世界中会遇到的情况,除了如果事情真的变得非常糟糕,Clark 会介入并解决问题,即使这意味着只是关闭有问题的虚拟机。
总的来说,Clark 的课程似乎是向学生介绍系统管理的绝佳方式。学生可以获得各种软件的实践经验,并且这种经验为他们在求职面试中提供了一些谈资。大学课程本身不一定是职业培训,但它应该有助于培养可以在实际情况下使用的技能。Clark 的课程提供了真实工具的经验,更重要的是,有助于培养现代就业市场所需的解决问题和批判性思维能力。
我很想听听专业的系统管理员和在校内外教授系统管理的人的想法。正如 Clark 在他的演讲中指出的那样,我们对教授编程的了解远多于对教授系统管理的了解。因此,如果您对该主题有任何想法,请随时在下面的评论区留言。
学校
本文是 返校 系列文章的一部分,该系列文章侧重于面向各级学生的开源项目和工具。
7 条评论