QCon 全球软件开发大会(北京站)门票 9 折倒计时 4 天,点击立减 ¥880 了解详情
写点什么

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

2020 年 6 月 28 日

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

首先,我们先来介绍一下 DevOps 的定义:


DevOps 是一种文化,它鼓励包括开发和运维团队在内的所有利益相关方之间进行协作,并通过自动化来改进流程,以提高软件交付的质量和速度。


虽然 DevOps 本身就在强调企业内部文化的变革,但是你会发现在公司中大家还是使用“DevOps 工程师”这个头衔,当然,与其它职位相同,DevOps 工程师也会有初级、高级之分。


我的整个职业生涯都专注于 DevOps,并在多家财富 500 强的公司工作过。本文中将和大家分享初高级 DevOps 工程师在面对配置管理相关问题时的不同解决方法。


配置管理


我对配置管理的定义是这样的:它是一种确保公司所拥有的所有软件和硬件资产在任何时候始终都是已知并被跟踪的原则——这些资产未来的任何变更都是已知且被跟踪的。您可以将配置管理看作是技术资产的一个随时更新的库存清单,一个单一的事实来源。


如何在 IT 部门中实施配置管理,与其说是一门科学,不如说是一门艺术:必须从引入变更的过程、实际变更的内容以及该变更是如何与许多其他依赖系统相关联的等许多不同的方面加以控制和跟踪。


对于 DevOps 工程师来说,配置管理最重要的 5 个方面是:


  • 管理操作系统和中间件层软件的安装和配置

  • 定义自己的 configuration-as-code(配置即代码)

  • 无论环境如何,都能确保可重复的变更是幂等的

  • 了解系统某一个部分的变更可能会对另一个部分产生的影响

  • 定义自己的 networks-as-code(网络即代码)


下面,我们以操作系统和中间件层软件的安装和配置、networks-as-code 为例,来深入探讨一下初高级 DevOps 之间不同的处理方法。


管理操作系统和中间件层软件的安装和配置

这是有运维操作背景的人们最熟悉的地方,需要对应用程序运行其上的多个操作系统和中间件有技术上的了解,需要知道 /etc/hosts 文件是什么,以及它是做什么的,并且在大多数情况下,使用命令行多于 GUI。


问题: 在数十台甚至数百台的服务器上安装某些监控代理软件


初级 DevOps 工程师的方法


编写一个 powershell/bash 脚本,该脚本可以使用给定的主机名和凭证输入来安装和配置对应的代理。如果安装失败,则将失败信息写入日志中,以便稍后查看。


高级 DevOps 工程师的方法


  • 查看需要安装此特定软件的操作系统和版本,并尝试将其标准化为受支持的最低版本。

  • 将软件安装在基础镜像中,这样在默认情况下,就能将软件安装到任何新服务器上

  • 使用配置管理工具,如 Chef 或 Ansible,而不是编写需要管理和维护的自定义脚本

  • 思考并从配置脚本中推导环境变量,以便在一次性部署到 100 台服务器之前,先在预发布环境中测试安装变更

  • 利用源代码控制系统,该源代码控制系统通常是基于 GIT 的,且具有可对代码进行测试的持续集成工具


总结


从本质上讲,高级 DevOps 工程师会以整体的视角来审视任何给定的问题,并试图理解如何在企业范围内实现这种变更,而不是简单地解决单一给定的问题。坦白地说,这种技能的技术含量较低,更多的是评估和解决问题的能力。


定义自己的 configuration-as-code


这个问题与在某些配置管理工具(例如 Ansible 或 Chef)以及如何用所选工具实现实际配置的技术技能有关。


问题: 标准 RHEL 配置需要一个额外的挂载存储驱动,该驱动的 /mount 位置需要 100gb 的可用磁盘空间。


初级 DevOps 工程师的方法


利用 Ansible 任务来连接磁盘驱动,扩展逻辑卷挂载并创建 /mount FS。并假定此操作仅在新配置的虚拟机上运行,因此,如果运行在现有服务器上,则可能会导致故障。


高级 DevOps 工程师的方法


  • 为标准 RHEL 配置部署创建一个 Ansible 角色

  • 使用 set_fact 模块为现存挂载点定义一个变量

  • 如果 /mount 在给定的磁盘空间中不可用,则用脚本创建它


总结


和不同的开发语言(java 、.net 、javascript)一样,每种语言都有自己的方式来实现代码中的某些逻辑。高级 DevOps 工程师了解如何实现代码的逻辑,以便解决配置所面临的多种可能性,而初级 DevOps 工程师很有可能是首次使用给定的工具 / 语言来解决该问题,因此只是简单地尝试解决眼前的问题。


原文链接


https://medium.com/devops-dudes/differences-between-junior-devops-and-senior-devops-engineers-8d0f28b8b30b


2020 年 6 月 28 日 15:384097

评论

发布
暂无评论
发现更多内容

定制开发小程序

luluhulian

MySQL详解:索引的介绍和原理分析

程序员小毕

Java MySQL 数据库 程序员 面试

iOS进阶模块(逆向安防)

ios 逆向

连续肝了好几天,终于把Java面试必备最重要的基础知识【Java集合】知识点总结整理出来了。

Java成神之路

Java 程序员 架构 面试 编程语言

你真的了解什么是「暴力解法」吗 ...

宫水三叶的刷题日记

面试 算法 LeetCode 数据结构与算法 贪心算法

架构师week13作业

Geek_xq

架构师week13总结

Geek_xq

了解操作系统的那些事儿,从这篇文章开始

飞天小牛肉

Java 面试 操作系统 程序员· 2月春节不断更

第四章作业

ALone

MySQL | 使用 limit 优化查询和防止SQL被优化

Java王路飞

Java MySQL 程序员 面试 性能优化

Spring RSocket:基于服务注册发现的 RSocket 负载均衡

阿里巴巴云原生

Java 开发者 云原生 API 应用服务中间件

拿到字节跳动offer后,简历被阿里捞了起来,二面竟迎来了P9的“盘问“

Java成神之路

Java 程序员 架构 面试 编程语言

我在春晚现场护航直播

阿里云视频云

阿里云 运维 直播 运维工程师 春晚

在 Kubernetes 上弹性深度学习训练利器 -- Elastic Training Operator

阿里巴巴云原生

人工智能 云计算 容器 云原生 k8s

不服不行!阿里曝光内部高并发实战手册,Github星标98K

Java架构之路

Java 程序员 架构 面试 编程语言

话题讨论 | 每逢佳节胖三斤,过完年你胖了吗?

石云升

话题讨论 减肥 2月春节不断更

阿里架构师道延:我对技术架构的理解与架构师角色的思考

阿里巴巴中间件

阿里云 架构 云原生 架构师 云原生架构

字节跳动,三面我败了!但是我把经验记录了下来,倒下了一个我,还有千千万万个程序员!

Java架构之路

Java 程序员 架构 面试 编程语言

android进阶之光!还有人不知道什么是AndroidX的吗?通用流行框架大全

欢喜学安卓

android 程序员 面试 移动开发

阿里内网热搜开发者工具在线教程推荐

阿里巴巴云原生

Java 开发者 云原生 工具 Arthas

阿里内部人手一份!P8大佬也叫好的 高性能MySQL系列文档

Java架构之路

Java 程序员 架构 面试 编程语言

面试官问:在读多写少的情况下,如何优化 MySQL 的数据查询方案

面试官问

MySQL 数据库 面试题 主从同步 读写分离

连Python都不熟也能跑通AI人脸识别?“隐藏Boss”竟是它!

华为云开发者社区

Python AI OpenCV 人脸识别 图像检测

RPC框架-dubbo:架构及源码分析-初篇

程序员架构进阶

微服务 dubbo 七日更 28天写作 2月春节不断更

android开发工程师需要学什么?360°深入了解Flutter,这原因我服了

欢喜学安卓

android 程序员 面试 移动开发

拥抱云原生,Fluid 结合 JindoFS:阿里云 OSS 加速利器

阿里巴巴云原生

容器 云原生 k8s 分布式计算 调度

解密协议层的攻击——HTTP请求走私

京东科技开发者

安全 HTTP

4种方法帮你解决IntelliJ IDEA控制台中文乱码问题

华为云开发者社区

Web 虚拟机 编码 IntelliJ IDEA 控制台

十年再出发,Dubbo 3.0 Preview 即将在 3 月发布

阿里巴巴云原生

Java 微服务 云原生 dubbo 应用服务中间件

Serverless 躁动背后的 5 大落地之痛

阿里巴巴云原生

Serverless 微服务 开发者 云原生 k8s

入职阿里工作5年,晋升到P8就剩这份学习笔记了,已帮助多个朋友拿到Offer

Java成神之路

Java 程序员 架构 面试 编程语言

边缘计算隔离技术的挑战与实践

边缘计算隔离技术的挑战与实践

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