C# Windows运维自动化编程实战-前言

前言

    本项目是本人多年前的一个作品。功能如下: 解决方案的WinForm项目生成功能界面;Console项目分别生成 32位/64位的 UAC提权的执行文件,Services项目实现对Windows各配置的管理;可以单独运行, 也可以以CBLP和OeStdServices的组件的方式集成到Ligg.EasyWinApp框架, 实现无人值守的、远程、在线的监控、部署、配置和运维管理。

介绍

    在《Ligg.EasyWinApp:一款无码化Windows应用编程框架-前言》谈起过本项目的起源,当时是在公司实施ITIL和ISMS以后,为解决运维组同事的激增的工作量而临时制作的一个应急之作,当时还是相当”硬编码”的,里面还需要用到大量的脚本、Autoit这样的工具和其他单独编码的外部工具(根据需求临时编写,需求变动,局部修改)。经过将近6年的使用、迭代,现在呈现给大家的版本,完全实现了标准化和配置化,即对于Windows运维中的资源管理、监控、部署、更新、升级的对象(软硬件配置、文件、注册表、主策略、用户用户组、服务、进程、软件安装/卸载、网络/数据库/电脑性能等)的操作完全通过配置文件来实现,不需额外去临时编写脚本和外部工具了。解决方案的的Service项目可以以CBLP和OeStdServices的组件的方式集成到Ligg.EasyWinApp框架, 然后通过Ligg.EasyWinApp的套件实现各种形式的部署:

  • Windows运维自动化编程实战—通过Ligg.EWA.Deployer实现本地可视化部署
  • Windows运维自动化编程实战—通过Ligg.EWA.Configer实现按策略部署
  • Windows运维自动化编程实战—通过AD组策略部署或Ligg.EWA.EasyWinService实现远程部署
  • Windows运维自动化编程实战—通过Ligg.EWA.AtTimeRunner或Ligg.EWA.OnTimeRunner实现无人值守的调度部署
  • Windows运维自动化编程实战—通过Ligg.EWA.MqttConnector实现即时在线部署

    这样一个工具,可以成为我们IT经理、运维工程师提高工作质量和效率、提升IT团队生产力的利器,从大量繁琐重复劳动中解放出我们的大脑和双手、有更多时间学习和追踪新的技术、应用,为业务带来更多、更新的价值,从而与公司实现双赢。

    ITIL和ISMS是与IT运维相关的最佳实践和方法论,是西方企业管理理论在IT管理领域的应用,应该成为我们IT经理、运维工程师日常工作中的思想资源和理论指导。它们要求实现标准化、制度化、精细化、数据化的管理和流程,如果没有自动化运维的工具或系统,真正能够落地是很难的,如果突然从以前粗放(但柔性)过度到精细(但僵硬)的模式,给团队带来的冲击力还是很大的。目前市场上的运维自动化软件,大型的有BMC、HP的 Open View、IBM Tivoli等,价格昂贵、应用复杂,比较适合大型数据中心的专业应用;中小型的有微软的System Center、Dell的Kace等,本人接受过前者的培训、看过后者的演示,不论价格,它们的应用和配置的复杂程度也还是不小的。

    综合考虑上面这些因素,本项目的宗旨是实现与System Center功能相仿、应用和配置符合运维工程师思维的,轻型的运维自动化系统。

    当下,随着人工智能的发展、云计算技术的普及以及容器技术的兴起, 吸引了很多企业尝鲜,但从目前看,这些新技术和服务并没有真正落地并为传统企业带来立竿见影的价值,就实际应用而言,目前市场上的公有云服务成本依旧偏高,易用性也不足以达到传统企业可以短时间内接受的程度,企业对业务数据外置的安全性也疑虑重重。因此,虽然云计算和人工智能是未来的重要发展趋势,但短期内还存在很多问题需要解决,需要企业具备专业的技术团队来更好得将云服务落地,并保证服务的可用性和可靠性。目前,很多企业尚处于混合云阶段,数据的流转、计算等环节都需要技术和运维人员的存在。短期内,运维人员仍然在公司中具有重要地位。另一方面,我们必须承认云计算和人工智能所带来的挑战。如今,企业已经从单纯选用 IaaS 服务向 PaaS 和 SaaS 层过渡,这些产品基本都在公有云平台内部经历了长时间的磨练和运行,这可以让不少新兴企业只需专注业务逻辑,而无需自研纯技术产品。这种情况下,企业非但可能缩减运维基础岗位,就连门槛较高的分布式中间件研发岗位也可能会大量缩减。
面对这些改变,运维人员唯一的办法就是不断学习和提升自己的技能,保持自身的与时俱进,及时做出相应调整和改变,这才是以不变应万变的根本之道。按照 DevOps 理论来说,运维工程师所负责的资源管理、监控、部署、更新、升级、监控和故障处理都可以由开发人员完成。当然,最理想的情况可能就是运维团队开发工具和平台,开发人员自己运维。
    无论如何,应用运维可能都需要适当转型,无论是向DevOps、向AIOps转型还是向其他技术岗位转型,具备代码开发能力都已经成为一项必备技能。

    这也是本文的另一目的:为运维工程师提供一个运维自动化编程的实战机会,让传统的运维工程师成为一个具备代码开发能力的DevOrps,为向AIOrps或其他技术岗位转型做好准备。

章节

    本项目将以某虚拟的跨国公司(总部在中国--包括2个工厂、美国分公司--包括1个工厂、德国分公司--包括1个工厂)为场景,来演示公司的运维自动化系统的开发、实施过程。
下面将按以下几个章节进行需求分析和源码讲解

  • Windows运维自动化编程实战—需求分析和概要设计
  • Windows运维自动化编程实战—框架实现
  • Windows运维自动化编程实战-System.Diagnostics.Process的扩展
  • Windows运维自动化编程实战—UAC和RunAsAdmin
  • Windows运维自动化编程实战—运维对象配置化
  • Windows运维自动化编程实战—网络监控
  • Windows运维自动化编程实战—文件处理
  • Windows运维自动化编程实战—Windows服务处理
  • Windows运维自动化编程实战—进程处理
  • Windows运维自动化编程实战—软件安装卸载
  • Windows运维自动化编程实战—组策略处理
  • Windows运维自动化编程实战—注册表处理
  • Windows运维自动化编程实战—用户用户组处理
  • Windows运维自动化编程实战—电脑性能监控
  • Windows运维自动化编程实战—软硬件配置及资产管理
  • Windows运维自动化编程实战—动态介质库(DML)的管理
  • Windows运维自动化编程实战—以CBLP和OeStdServices的组件的方式集成到Ligg.EasyWinApp框架
  • Windows运维自动化编程实战—通过Ligg.EWA.Deployer实现本地可视化部署
  • Windows运维自动化编程实战—通过Ligg.EWA.Configer实现按策略部署
  • Windows运维自动化编程实战—通过AD组策略部署或Ligg.EWA.EasyWinService实现远程部署
  • Windows运维自动化编程实战—通过Ligg.EWA.AtTimeRunner或Ligg.EWA.OnTimeRunner实现无人值守的调度部署
  • Windows运维自动化编程实战—通过Ligg.EWA.MqttConnector实现即时在线部署
  • Windows运维自动化编程实战—通过Ligg.EWA.monitor实现监控管理

正在努力挖坑中, 敬请关注...

doing
posted @ 2021-11-06 11:51  一个老程序员的碎碎念  阅读(630)  评论(0编辑  收藏  举报