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