几年前,当我攻读图书馆学硕士学位时,我选修了一门关于 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 条评论