在公立学校管理 IT 可能是一项艰巨的任务。Penn Manor 学区的 IT 团队 管理着超过 3,500 台学生 Linux 笔记本电脑和台式机,具有数百种独特的教学要求,涵盖多个学科、部门和年级。预算紧张,人员稀少,课堂支持需求持续增长。鉴于人力和财政资源非常有限,我的团队必须团结一致,完成我们的教育使命和课堂技术目标。
必要性和稀缺性迫使我们聪明地工作,但如果没有协作,我们就会被淹没。我认为这可能就是自动化、迭代和编排等 DevOps 原则与我们的团队产生如此强烈共鸣的原因;协作的 IT 实践能够构建更好的学生体验。DevOps 在系统管理和应用程序开发领域是预期的,但是当底层实践和软件工具应用于学校时会发生什么?在编纂我们的运营框架时,我们发现了一个独特的学生学习机会。
Puppet 是很棒的课堂宠物
2010 年,首批 600 台 Linux 笔记本电脑开始进入我们七所小学的教室。我们知道我们必须以不同的方式思考设备和补丁管理。我们的小学教室系统元素之间会存在一些共性,例如默认的 XFCE 桌面环境。但是,我的团队和我也在努力寻找更好的技术来支持不同年级的教学技术需求。
二年级的软件可能与六年级教室的程序截然不同。我的小型团队迫切需要一种解决方案来管理课堂笔记本电脑,既要像对待牲畜一样批量管理,又要像对待宠物一样个性化管理。Penn Manor 的系统工程师 Chad Billman 提议使用开源 Puppet 作为解决方案。我的团队深入研究后发现,Puppet 非常适合管理系统补丁、升级以及教师在多个年级所需的数十个笔记本电脑设置和偏好。Puppet 用于设置网络配置、管理本地帐户、定义桌面偏好设置以及协调应用程序安装。我们甚至使用它来管理快速启动 Web 快捷方式,这有助于新兴读者快速导航到教师策划的网站。
胜过红笔
随着我们对课堂 Linux 笔记本电脑的投入增加到近 1,800 台小学和中学系统,协作代码审查和版本控制的需求变得至关重要。学区 Puppet 配置已迁移到本地 GIT/Gerrit 服务器。Gerrit 的编排能力对于我们团队的运营至关重要,因为 Penn Manor 学区横跨 10 个学校建筑,地理范围达 110 平方英里,这意味着我们本质上是一个分布式团队。除了利用 GIT 进行团队代码和配置开发的明显优势外,Gerrit 的并排代码审查和批准工具还可以帮助我的员工轻松地远程审查彼此的工作。配置错误在影响我们的学生笔记本电脑并造成课堂灾难之前就被发现并消除。
为学生自动完成
我们在 Puppet、GIT 和 Gerrit 方面的成功为我们提供了流程和工具,以应对一个巨大的教学项目,即为我们 1,700 名高中生中的每一位分发 Linux 笔记本电脑,作为 1:1 笔记本电脑学习计划的一部分。在配置和代码审查系统到位后,下一个任务是为高中笔记本电脑系统映像构建持续集成管道。
在 2014 年 1 月项目启动的准备阶段,我们为学生笔记本电脑采用了自动化的主映像创建流程。期望的结果是一个最新的笔记本电脑映像,其中包含最新的安全和应用程序更新,以及我们的学校环境配置和预装软件。主映像将用于重置使用后的借用笔记本电脑,为新入学的学生准备新笔记本电脑,或者在学生搞乱系统时恢复笔记本电脑出厂设置。(我们的学生拥有他们学校发放的笔记本电脑的 root 访问权限,因此错误是不可避免的)。
为了实现这一目标,映像通过 Packer 生成,它将我们的自定义 Puppet 配置与 Ubuntu 14.04 OS 的本地镜像合并,其中包括最新的系统更新。整个映像创建过程通过 Jenkins 调度,Jenkins 触发每日 Packer 构建并将主映像 VM 输出到指定的共享文件。在管道的末端,映像 VM 被馈送到我们的多播映像系统,这是一个内部开发的应用程序,称为快速 Linux 部署工具包 (FLDT)。除了每日构建之外,Packer 还设置为为推送到 Git 的每个配置更改构建映像和虚拟机。通过整个过程的自动化,我的团队或我们的学生技术学徒可以轻松地在 VM 中测试提议的配置更改,或者实际将其映像到学生笔记本电脑上进行真实世界的测试。
21 世纪公共广播系统
在笔记本电脑分发之后,当下一个 Firefox 更新或安全补丁在 30 秒后发布时会发生什么?当我们的学生首次收到学校发放的笔记本电脑时,他们会接受 15 分钟的教程,其中包括定期运行软件更新程序的指导。然而,像成年人一样,青少年经常忽视或只是忘记个人系统维护。我们如何紧急修补所有系统或批量推送必需的应用程序?
举例说明:在本学年开始之初,当我的团队和支持资源严重超负荷时,宾夕法尼亚州的学校收到了一个令人惊讶的、最后一刻的、对关键学生评估和测试软件程序的强制更新。时机很糟糕,但我们必须尽快协调更新。因为我们维护对每台学生笔记本电脑的 SSH 访问权限,所以 Ansible 成为了救星。我的团队为所需的软件创建了一个安装 playbook,并在几个上学日的过程中轻松连接到笔记本电脑群。当然,如果我们的学生笔记本电脑像服务器一样始终在线,那么这个过程只需几秒钟。
酷孩子编码……并协作
当我们构建更好的 IT 流程时,我们意外地为我们的学生创造了独特的机会。Gerrit 非常适合我们的 高中学生帮助台;学生学徒可以学习和检查代码和配置,并从真实的开发模型中学习。更令人兴奋的是,有抱负的学生程序员可以积极参与同龄人使用的高中笔记本电脑映像的设计、开发和测试。IT 人员或教师可以审查提交内容,然后再接受或拒绝学生的作品。几位学生帮助台学徒积极贡献了代码和配置调整。对我们的高中笔记本电脑主映像的贡献的具体示例包括改进默认触控板设置、消除音频录制故障以及测试和集成几个关键桌面软件包。
学生学徒在参与持续软件交付的真实实践中玩得很开心。有什么比打开 Gerrit 并看到你的代码被审查和合并更棒的呢?对于我们的孩子们来说,我怀疑这比通过关于可以通过 Google 搜索轻松找到的随机事实的随堂测验更令人满意。当我们信任学生并让他们直接参与自己学校软件的开发时,开发人员和操作员、教师和学生之间的界限开始变得模糊。
特别感谢 Chad Billman,他是我们 DevOps 项目和计划背后的首席技术架构师。
教育领域
1 条评论