如何教学生系统管理员

暂无读者喜欢此文。
Book stack

Kate Ter Haar 拍摄。Opensource.com 修改。CC BY-SA 2.0。

几年前,当我攻读图书馆学硕士学位时,我选修了一门关于 Unix (Solaris) 系统管理的课程。这门课程本应涉及在一台 Sun 工作站上设置 Web 服务器,从全新、裸机的 Solaris 操作系统安装开始,逐步构建起来。

听起来很棒,对吧?我当然是这么认为的,但是在课程开始后,教授被告知要放缓节奏,因为大学里级别较高的人担心学生管理的机器可能会被黑客入侵,院系将对此负责。课程进行了修改,我们必须通过登录教授完全控制的工作站来完成一些较小、不太复杂的任务。我们没有安装 Apache 和 PHP,但是我们确实解决了一些有趣且具有挑战性的问题。尽管这门课程最终效果不错,但与如果我们被赋予管理自己机器的自由相比,它仍然只是一个苍白的模仿。

自从我上那门课以来,技术方面发生了很多变化,并且由于新的学年即将开始,我认为现在是审视现代系统管理课程的作业应该是什么样子的好时机。学生的第一次系统管理经验是否应该带有安全网,以便在他们犯错时不会出现太多的安全问题?或者课程是否应该尽可能地贴近现实,即使这被认为是危险的?我非常倾向于“现实”的一面,我将分享一个以这种方式教学的优秀例子。如果您有不同的想法,请在下面的评论区分享。

真实的系统管理作业

来自 奥塔哥理工学院Tom Clark 今年早些时候在 Linux.conf.au 上做了一个演讲,其中提供了一个现代、真实的系统管理课程的优秀例子。课程内容是使用 Clark 的三个主要教学原则呈现的

  1. 做一些事情比仅仅谈论它更好。
  2. 使用一致的开发线索,以便主题相互构建,并且第一天的课程仍然与最后一天相关。
  3. 现实主义,包括 真实的任务真实的工具真实的评估

这三个想法贯穿课程始终,并用于为学生提供真实的、实践的学习体验。

学习体验

学生们在为期 16 周的课程中,使用真实的工具学习实践技能。为了支持他们的系统,学生们通过使用 RTMediaWiki 学习使用支持票和文档。为了部署和维护他们的系统,他们学习了使用 Puppet 进行配置管理,使用 Nagios 进行系统监控,以及使用 Bacula 进行备份和恢复。但是,广泛的概念比我刚刚提到的特定软件包更重要。重点是学习配置管理,而不是接受 Puppet 使用培训。Clark 使用的软件是因为它对他有效,但该软件是灵活且可更改的。

主要项目涉及学生两人一组部署、维护和支持 ownCloud 的部署。他们负责按时部署并保持系统运行,在两周的时间内最大限度地减少停机时间。在此期间,Clark 充当用户和经理,打开支持票。在他的用户角色中,他请求帮助重置密码和其他基本任务。作为经理,他请求配置更改、新的 Nagios 检查和其他管理任务。学生应及时处理问题,记录他们的流程并有效地沟通。

除了打开支持票之外,Clark 还通过故意破坏东西来给学生制造困难。他拥有所有服务器的 root 访问权限,因此他只需登录并调整一些东西,例如关闭 MySQL。在项目的某个时候,Clark 会做一些残酷的事情——基本上是通过删除重要文件和破坏网站来模拟真实的黑客攻击。他说,为了“最佳学习体验”,他会在凌晨 3:00 左右这样做。

评分基于正常运行时间以及学生处理支持票和其他问题的能力。Clark 使用他自己的 Nagios 实例来监控正常运行时间,并审查他们的票务日志和 wiki,以了解学生处理问题和团队合作的情况。然后他与学生面对面会面,讨论他们的表现。

我作为学生的个人经历很糟糕,因为有人担心一群学生可能会搞砸并给院系和/或大学带来问题,即使搞砸是学习过程的一部分,并且我们的工作站被黑客入侵的机会微乎其微。另一方面,Clark 的学生能够体验到他们在真实世界环境中会遇到的情况,除了如果事情真的变得非常糟糕,Clark 会介入并解决问题,即使这意味着只是关闭有问题的虚拟机。

总的来说,Clark 的课程似乎是向学生介绍系统管理的绝佳方式。学生可以获得各种软件的实践经验,这种经验让他们在求职面试中有话可说。大学课程本身不一定是职业培训,但它应该有助于培养可以在实际情况中使用的技能。Clark 的课程提供了真实工具的经验,更重要的是,有助于培养现代就业市场所需的解决问题和批判性思维能力。

我很想听听专业的系统管理员和教授系统管理的人(无论在学术界内外)的想法。正如 Clark 在他的演讲中指出的那样,我们对教授编程的了解远多于对教授系统管理的了解。因此,如果您对该主题有任何想法,请随时在下面的评论区留言。

返回
学校

本文是 返校 系列文章的一部分,该系列文章侧重于面向各级学生的开源项目和工具。

7 条评论

我第一次发布该视频时就看过了,很喜欢。

在过去的 7 年里,我每年春天都会教授 Linux 系统管理员课程,虽然课程内容在那段时间里发生了一些变化,但设置变化不大。最初,我有一台 4 核服务器,配备 16GB 内存,运行 OpenVZ(最初在 EL5 上,后来在 EL6 上,如果 Virtuozzo 7 在明年春天完成,希望明年春天能在 EL7 上运行)。我有一个“课程服务器”容器,它有一个公共 IP 地址,每个学生在该容器上都有一个常规用户帐户。然后在同一主机上,为每个学生提供了一个具有私有 IP 地址的容器。学生拥有对其自身容器的 root 访问权限……但是要访问它,他们必须首先登录到课程容器……然后从课程容器 ssh 到他们自己的容器。虽然这不是一个完美的安全解决方案,但我认为它有所帮助。学生必须拥有良好的密码,并且已实施 ssh 暴力破解攻击缓解措施。

在最近的两个班级中,我获得了一台运行 KVM 的第二台服务器,配备了更多内存(如果可能,每个学生 1GB 或更多是一个好主意)和更多磁盘空间……我还为每个学生提供了一个 KVM VM。容器运行 EL6,KVM VM 运行 EL7……因此学生可以访问 sysvinit(兼容模式下的 upstart)和 systemd。有一个辅助课程服务器 KVM VM,它具有公共 IP,学生可以从中访问具有私有 IP 地址的学生 KVM VM。

我们实际上在课程快结束时介绍了 OpenVZ、容器和 KVM,因此学生希望在最后能够理解环境。

我没有破坏东西,也没有故障单系统,但是他们有大量的软件包管理器、安装服务和配置服务的实践经验……我会验证他们的家庭作业并提供大量反馈。该课程有相当多的讲座材料(课堂和错过的学生的截屏录像)。

我同意,动手操作对于学生从课堂中获得很多东西来说是绝对必要的。我不认为我可以让学生在凌晨 3 点修复服务器。 :)

我认为这很棒,希望这样的课程能在高中阶段开设。我从在家构建自己的 Linux 系统的学生那里学到了很多东西,然后当我自己学习 Linux 时,他们与我分享了他们的见解和工作经验。我还提出开设一门 Linux 课程,其中包括一些基本的系统管理,实际上更像是一门使用 VirtualBox 在 Windows 机器上托管 Linux 发行版的熟悉课程。大约五年前,当地一家教育机构拒绝了该提议。大约十二年前,我接受了 CCNA 讲师的培训,随后我认为 Linux 系统管理可以而且应该作为职业教育中心此类课程的一部分进行教授。有很多可能的选择,也有很多可以涵盖和互连的主题,包括 IP 子网划分、路由、Web 托管、使用 Samba 和 NFS 进行文件服务以及使用不同平台进行虚拟化。

感谢这篇文章。很高兴看到我的工作以这种方式得到肯定,我希望它能引发良好的讨论,帮助我们改进教学。

我想指出的一点是,这种课程之所以有效,是因为学生们为此付出了非常艰苦的努力。如果学生不接受这个过程,讲师就无能为力来拯救一个班级。我认为我获得了这种接受,因为学生们认识到他们被要求做的事情的价值。只要他们理解为什么期望他们这样做,他们就非常愿意努力工作。

很棒的视频!感谢您允许您的演示文稿在线发布。

我目前正在开发两门高级 Linux/Unix 系统管理课程的课程材料,我很欣赏您所做的工作。在我的情况下,学生的 VM 不是 24x7 全天候开启的,因此我需要相应地调整我的材料。

给出真实生活任务的想法是关键。我的主要目标之一是确保学生知道哪些文档可用,如何整理出可能具有误导性的来源(您会惊讶于有多少学生从 Google 搜索中获取第一个答案),以及如何自己找到答案。正如一位前任导师教导我的那样,您不需要知道所有答案,您只需要知道在哪里找到它们。

很棒的文章!我在美国一所大学的计算机信息系统班级,作为一名经验丰富的 IT 专业人士,我正在帮助为该课程的学生设计下一代课程。我从没想过这样的课程,但你可以打赌我会制定计划来实施它。

不过,有一点小意见 - 您 Request Tracker 的链接会将您带到 GNOME 内部系统管理员票务站点,在那里寻找 RT 信息的人将找不到任何信息。您应该使用的链接是 https://www.bestpractical.com/rt/

非常好!

请问这门课使用了哪些基础设施资源?
您是否正在使用内部(在奥塔哥理工学院)虚拟化解决方案,每个团队必须管理多少台服务器,您是否在某些公共云上为该课程部署基础设施?
再次感谢,观看您的演讲非常有趣。

© 2025 open-source.net.cn. All rights reserved.