linux devops

在公立学校中管理IT可能会很艰难。 Penn Manor学区的IT团队管理着3,500多名学生Linux笔记本电脑和台式机,具有数百种独特的教学要求,涵盖了多个学科,部门和年级。 预算紧缺,人员稀少,教室支持需求不断增长。 鉴于宝贵的人力和财力资源很少,我的团队必须团结起来才能实现我们的教育使命和课堂技术目标。

必要性和稀缺性迫使我们聪明地工作,但是如果没有协作,我们只会淹死。 我认为这可能就是为什么DevOps原则(例如自动化,迭代和编排)在我们团队中引起如此强烈共鸣的原因; 合作式IT实践可提供更好的学生体验。 DevOps有望在系统管理和应用程序开发领域中使用,但是当将基础实践和软件工具应用于学校时会发生什么呢? 在整理我们的运营框架时,我们发现了一个独特的学生学习机会。

木偶是伟大的课堂宠物

在2010年,首批600台Linux笔记本电脑开始在我们的7座小学大楼的教室中推出。 我们知道我们必须对设备和补丁程序管理有所不同。 例如,我们的基本教室系统(例如默认的XFCE桌面环境)的各个元素之间会有一些共性。 但是,我和我的团队还为更好地支持教学技术要求而苦苦挣扎,这些要求因年级而异。

二级软件可能与六年级教室中的程序有很大的不同。 我的小团队非常需要一种解决方案,用于管理教室笔记本电脑(包括牛和宠物)。 Penn Manor的系统工程师Chad Billman提出了开源Puppet作为解决方案。 我的团队深入研究,发现Puppet是管理系统补丁,升级以及多个年级老师所需的数十种便携式笔记本电脑设置和偏好的理想选择。 Puppet用于设置网络配置,管理本地帐户,定义桌面首选项以及协调应用程序安装。 我们甚至使用它来管理快速启动的Web快捷方式,这可以帮助新兴读者快速导航到教师指定的网站。

比红笔更好

随着我们对教室Linux笔记本电脑的投资增加到将近1800个中小学系统,对协作代码审查和版本控制的需求变得至关重要。 District Puppet配置已移至本地GIT / Gerrit服务器。 Gerrit的编排能力对于我的团队的运营至关重要,因为Penn Manor学区在110平方英里的地理区域内包含10栋教学楼,这意味着我们实际上是一个分布式团队。 除了使用GIT进行团队代码和配置开发的明显优势外,Gerrit的并行代码审查和批准工具还可以帮助我的员工轻松地从远处审查彼此的工作。 配置错误会在打到我们的学生笔记本电脑上并引起教室灾难之前被发现并消除。

自动,针对瞳Kong

我们在Puppet,GIT和Gerrit上的成功为我们提供了处理大型教学项目的流程和工具,作为1:1笔记本电脑学习计划的一部分,向我们的1,700名高中学生中的每一个分发了Linux笔记本电脑。 有了配置和代码审查系统,下一个任务是为高中便携式计算机系统映像建立一个持续的集成管道。

在2014年1月计划启动之前,我们为学生笔记本电脑采用了自动主图像创建过程。 理想的结果是获得最新的便携式计算机映像,该映像结合了最新的安全性和应用程序更新以及我们的学校环境配置和预安装的软件。 主映像将用于在使用后重置借用者笔记本电脑,为新的入学学生准备新的笔记本电脑,或在学生要破坏其系统的情况下恢复出厂的笔记本电脑。 (我们的学生具有访问学校发行的笔记本电脑的权限,因此肯定会发生错误)。

为此,通过Packer生成了映像,该映像将我们的自定义Puppet配置与Ubuntu 14.04 OS的本地镜像合并,包括最新的系统更新。 整个映像创建过程是通过Jenkins安排的,它会触发每日Packer构建并将主映像VM输出到指定的文件共享。 在流水线的最后,映像VM被馈送到我们的多播映像系统中,这是一个内部开发的应用程序,称为Fast Linux Deployment Toolkit( FLDT )。 除了日常构建,Packer还设置为针对推送到Git的每个配置更改构建映像和虚拟机。 通过整个过程自动化,我的团队或我们的学生技术学徒可以轻松地在VM中测试建议的配置更改,或将其实际映像到学生笔记本电脑上以进行实际测试。

21世纪的公告系统

在分发笔记本电脑后,如果30秒后下一次Firefox更新或安全补丁着陆,会发生什么? 当我们的学生第一次收到学校发行的笔记本电脑时,他们会收到15分钟的教程,其中包括有关定期运行软件更新程序的指导。 但是,像成年人一样,青少年经常无视或根本忘记了个人系统维护。 我们如何紧急修补所有系统或批量推送所需的应用程序?

恰当的例子:在本学年开始之初,由于我的团队和支持资源远远超出了能力,宾夕法尼亚州的学校收到了令人惊讶的,最后一刻的,强制性的重要学生评估和测试软件程序更新。 时机很糟糕,但是我们必须尽快协调更新。 因为我们维护对每台学生笔记本电脑的SSH访问, 所以Ansible是一个救生员。 我的团队为所需的软件创建了安装手册,并在几天的学习过程中轻松地将其连接到笔记本电脑。 当然,如果我们的学生笔记本电脑一直在线(例如服务器),则过程将花费数秒钟。

酷孩子代码...并合作

随着我们建立更好的IT流程,我们偶然为学生创造了独特的机会。 Gerrit非常适合我们的高中学生服务台 ; 学生的学徒可以学习和检查代码和配置,并从真实的开发模型中学习。 更令人兴奋的是,崭露头角的学生程序员可以积极参与同龄人使用的高中笔记本电脑映像的设计,开发和测试。 然后,IT员工或教师可以在接受或拒绝学生作业之前检查并审查提交的内容。 几个学生服务台的学徒们积极贡献了代码和配置调整。 对我们的高中笔记本电脑主图像的贡献的具体示例包括改进默认触控板设置,压缩音频记录的扭结以及测试和集成多个关键台式机软件包。

学生学徒们在参加连续软件交付的真实实践的过程中很开心。 什么比打开Gerrit并查看您的代码已被审核和合并更好? 对于我们的孩子,我怀疑这比通过对通过Google搜索轻松找到的随机事实进行流行知识问答更为令人满意。 当我们信任学生并直接让他们参与自己的学校软件的开发时,开发人员与操作员,老师与学生之间的界线开始模糊。

特别感谢我们DevOps项目和计划背后的首席技术架构师Chad Billman。


开源于
教育

来自教育者,学生,倡导者,父母以及更多人的文章集合,他们在教育中实施开源并致力于为所有人建立更开放的知识库。

翻译自: https://opensource.com/education/15/3/devops-cool-schools

linux devops

linux devops_DevOps原则与学生Linux程序产生共鸣相关推荐

  1. Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序

    Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序 一.原理     Linux/Unix的X Window具有网络透明性.X Window系统里有一个统一的Serve ...

  2. linux在生活中的应用例子,LINUX操作系统在教师学生日常生活中的应用(全).docx

    WORD格式 专业资料整理 4.LINUX操作系统在教师学生日常生活中的应用 随着网络的快速发展,网络的安全也成为了广大计算机用户的第一头疼事. 也是因为这个原因 linux 操作系统的价值就更加能体 ...

  3. linux下 为自己编写的程序 添加tab自动补全 功能

    linux下 为自己编写的程序 添加tab自动补全功能 入门 complete 在我的tmp下随便写了一个a.sh, 为他补全 edit /etc/bash_completion.d/foo _foo ...

  4. 如何在Windows下使用Linux系统来编译和运行程序?

    很多开发人员都有这样的疑问:自己平时是在Windows下面办公的,而自己编写的程序的运行环境又是Linux的,如何从Windows切换到Linux呢?是不是要专门到Linux机器上去编写代码呢? 实际 ...

  5. 在 Linux 上找出并解决程序错误的主要方法【转】

    在 Linux 上找出并解决程序错误的主要方法[转] 参考文章: (1)在 Linux 上找出并解决程序错误的主要方法[转] (2)https://www.cnblogs.com/sky-heaven ...

  6. qt程序在Linux下字体乱了,解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!...

    本文解决的主要是界面程序编译运行后无法显示中文的问题,如果在creater 中无法输入中文,下载个IBus或者搜狗之类的中文输入法即可解决! 首先说乱码问题,这个很好解决: 如果是在linux下打开W ...

  7. linux系统在硬盘上安装程序,在硬盘中安装Linux操作系统最简单的方法

    通过Grub(多系统引导管理器)来安装 本人最近摸索Linux系统,想在本机上安装双系统,但我这老爷机上没有软驱,没有刻录机,下载的ISO文件只能存在硬盘上,也只能通过硬盘来安装,在各大Linux的B ...

  8. linux查看占用内存最多的程序

    linux查看占用内存最多的程序 1.linux查看占用内存最多的程序 ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head 2.查看占用cpu最 ...

  9. linux下生成guid,在Linux下生成GUID的程序,及编译错误 “uuid/uuid.h: No such file or directory” 的解决办法。...

    在Linux下编写生成GUID的程序,如下 guid.c 文件: #include #include void uuid2string(const uuid_t uu, char* const str ...

最新文章

  1. 利用python实现IP扫描
  2. 动态规划----解121. 买卖股票的最佳时机---最大连续子序列和
  3. Efficient Sparse Coding Algorithm
  4. 每天一道LeetCode-----给定二维数组代表海域和岛屿,计算有多少个孤岛
  5. HDU多校1 - 6955 Xor sum(字典树+贪心)
  6. LDA 线性判别分析模型
  7. 陆奇最新分享:数字化进程加速,创新者如何把握机会?
  8. Python基础知识:当字典碰到类时会发生什么?
  9. cookielifetime php_PHP session有效期session.gc_maxlifetime的设置方法
  10. C语言的本质(37)——makefile之隐含规则和模式规则
  11. MySQL FailOver(官方自带,free)
  12. 大数据挑战:敢不敢不要加入人的判断?
  13. 面试总结:给应届生一些找工作的基本建议,毕竟我踩坑多
  14. oracle8ora-00059,ORA-00059错误分析以及MAXDATAFILES、DB_FILES参数修改
  15. 京东、腾讯历经最难Q1
  16. 命令行对文件批量改名
  17. ImageNet中英文类别对照
  18. 花了5年时间,用过市面上95%的工具,终于找到这款万能报表工具
  19. 水果店开业活动,水果店开业活动策划
  20. 无法访问其它家庭组计算机,Win7电脑同一个家庭组或者工作组,电脑无法相互访问...

热门文章

  1. Fabric node sdk 1.4简明教程
  2. python入门系列:函数
  3. shell实战训练营Day14
  4. Celery 源码解析六:Events 的实现
  5. 例行性工作 排程(crontab)
  6. SpringBoot之Dubbox
  7. 首屏动画及验证网络状态跳转
  8. PHP课程第一次实验作业提交
  9. 算法高级(12)-分布式系统常见负载均衡算法
  10. python多进程 保活_老板,你这个爬虫保活吗?