InfoQ|初高级DevOps工程师处理方法有何不同?,同样是配置管理

作者|TjBlogumas策划|田晓旭
首先 , 我们先来介绍一下DevOps的定义:
DevOps是一种文化 , 它鼓励包括开发和运维团队在内的所有利益相关方之间进行协作 , 并通过自动化来改进流程 , 以提高软件交付的质量和速度 。
虽然DevOps本身就在强调企业内部文化的变革 , 但是你会发现在公司中大家还是使用“DevOps工程师”这个头衔 , 当然 , 与其它职位相同 , DevOps工程师也会有初级、高级之分 。
我的整个职业生涯都专注于DevOps , 并在多家财富500强的公司工作过 。 本文中将和大家分享初高级DevOps工程师在面对配置管理相关问题时的不同解决方法 。
1配置管理
InfoQ|初高级DevOps工程师处理方法有何不同?,同样是配置管理
文章图片
我对配置管理的定义是这样的:它是一种确保公司所拥有的所有软件和硬件资产在任何时候始终都是已知并被跟踪的原则——这些资产未来的任何变更都是已知且被跟踪的 。 您可以将配置管理看作是技术资产的一个随时更新的库存清单 , 一个单一的事实来源 。
如何在IT部门中实施配置管理 , 与其说是一门科学 , 不如说是一门艺术:必须从引入变更的过程、实际变更的内容以及该变更是如何与许多其他依赖系统相关联的等许多不同的方面加以控制和跟踪 。
对于DevOps工程师来说 , 配置管理最重要的5个方面是:
管理操作系统和中间件层软件的安装和配置
定义自己的configuration-as-code(配置即代码)
无论环境如何 , 都能确保可重复的变更是幂等的
了解系统某一个部分的变更可能会对另一个部分产生的影响
定义自己的networks-as-code(网络即代码)
下面 , 我们以操作系统和中间件层软件的安装和配置、networks-as-code为例 , 来深入探讨一下初高级DevOps之间不同的处理方法 。
2管理操作系统和中间件层软件的安装和配置这是有运维操作背景的人们最熟悉的地方 , 需要对应用程序运行其上的多个操作系统和中间件有技术上的了解 , 需要知道/etc/hosts文件是什么 , 以及它是做什么的 , 并且在大多数情况下 , 使用命令行多于GUI 。问题:在数十台甚至数百台的服务器上安装某些监控代理软件
初级DevOps工程师的方法
编写一个powershell/bash脚本 , 该脚本可以使用给定的主机名和凭证输入来安装和配置对应的代理 。 如果安装失败 , 则将失败信息写入日志中 , 以便稍后查看 。
高级DevOps工程师的方法
查看需要安装此特定软件的操作系统和版本 , 并尝试将其标准化为受支持的最低版本 。
将软件安装在基础镜像中 , 这样在默认情况下 , 就能将软件安装到任何新服务器上
使用配置管理工具 , 如Chef或Ansible , 而不是编写需要管理和维护的自定义脚本
思考并从配置脚本中推导环境变量 , 以便在一次性部署到100台服务器之前 , 先在预发布环境中测试安装变更
利用源代码控制系统 , 该源代码控制系统通常是基于GIT的 , 且具有可对代码进行测试的持续集成工具
总结
从本质上讲 , 高级DevOps工程师会以整体的视角来审视任何给定的问题 , 并试图理解如何在企业范围内实现这种变更 , 而不是简单地解决单一给定的问题 。 坦白地说 , 这种技能的技术含量较低 , 更多的是评估和解决问题的能力 。
3定义自己的configuration-as-code
InfoQ|初高级DevOps工程师处理方法有何不同?,同样是配置管理
文章图片
这个问题与在某些配置管理工具(例如Ansible或Chef)以及如何用所选工具实现实际配置的技术技能有关 。
问题:标准RHEL配置需要一个额外的挂载存储驱动 , 该驱动的/mount位置需要100gb的可用磁盘空间 。 利用Ansible任务来连接磁盘驱动 , 扩展逻辑卷挂载并创建/mountFS 。 并假定此操作仅在新配置的虚拟机上运行 , 因此 , 如果运行在现有服务器上 , 则可能会导致故障 。为标准RHEL配置部署创建一个Ansible角色


推荐阅读