如何教学生系统管理员

还没有读者喜欢这个。
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 的服务器,它具有更多的 RAM(如果可能,每个学生 1GB 或更多是一个好主意)和更多的磁盘空间……我还为每个学生提供了一个 KVM VM。容器运行 EL6,KVM VM 运行 EL7……因此学生可以访问 sysvinit(兼容模式下的 upstart)和 systemd。有一个辅助课程服务器 KVM VM,它具有公共 IP,学生可以从中访问具有私有 IP 地址的学生 KVM VM。

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

我没有破坏东西,也没有故障单系统,但是他们有很多使用包管理器、安装服务和配置服务的实践经验……我会验证他们的家庭作业并提供很多反馈。这门课有很多讲座材料(课堂和 screencast 录音,供任何错过课程的人使用)。

我同意,动手操作对于学生从课程中获得更多收获绝对是必需的。我不认为我可以让学生在凌晨 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/

Dan,

感谢您的“挑剔”。我们已更改文章中的链接以指向您建议的网站。

回复 作者:Dan Mossor (未验证)

非常好!

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

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.