从 IT 到 DevOps 实践

原文地址:medium.com/better-progr
原文作者:Jovan Hernandez
翻译君:CODING 戴维奥普斯

从事过 IT 工作的人可能会对以下这段经历感到非常熟悉:您最初是一位技术支持,扮演 IT 桌面工程师的角色(IT 桌面工程师,能够为与计算机系统,软硬件相关的问题提供技术帮助和支持)。在这个职位上,您不断获得经验,可能会晋升为 2 级桌面工程师,并成为 IT 管理员。之后您将有足够的经验以系统管理员或系统工程师的身份开始在系统上工作。

你开始思考:“我应该更多地关注代码还是运维?”

如果您是要从事软件或 Web 开发的系统管理员,那么 DevOps 自然而然成为了下一步将要关注的理念。系统管理员和工程师的主要目标是使不同部门的员工可以共享信息并更有效地合作。DevOps 工程师在效率和优化的方面与这些角色非常相似,但是他们要做的是将软件开发团队与部署团队联系在一起。

许多人仍然不知道如何进入软件开发领域,同时觉得他们一直困在重启计算机和修复打印机的炼狱中,但是如果努力学习的话,仍然有一条光明的出路。

这篇文章是写给谁的?

首先,我们需要清楚两件事:

1. 这不是从 IT /运营转移到 DevOps 的唯一且最佳的方法,但这是曾经实践过并且有效的方法。您可能有不同的经历,并且过程可能会有所不同。

2. 我们之前都知道:“ DevOps 不是工作,而是一种文化。” 当然如此。有人说DevOps 不是一项真正的工作,开发和运维团队应该携手合作。如果您的公司负担得起聘请 DevOps 工程师是非常有优势的。如果不能,可以试图将 DevOps 理念与您当前的团队结合起来。

话虽如此,这篇文章实际上是为那些从事 IT 并希望更多地参与软件开发,Web 开发或者产出人员所写。

DevOps 工具和技能

以下是我关注的关键技能和技术,这些技能和技术使我走上了软件开发的道路。

操作系统:Linux

如果想要进入 DevOps 的领域,习惯 Linux 是非常必要的。即使不实践 DevOps,我们也应该使用Linux,因为 Linux 支持全球 90% 以上的计算机和系统。

如果使用 Mac 作为日常驱动程序事情将会变得非常容易。 由于 Mac 是基于 Unix 的,因此许多(即使不是大多数)Linux 命令也可以 在Mac 上使用。 当我们进行 Mac 管理时,如果想把每日任务编写入脚本并自动化,或者将 SSH 加密到服务器和计算机中以执行支持,这是非常有用的。稍后我们会关注更多这个话题。

Web Stack:LAMP

虽然并非总是适用于每个 DevOps 角色,但学习 LAMP 堆栈有助于我们从操作系统级别了解 Web 应用程序的基本基础。 我们每个人每天都在使用应用程序,但是了解Web 应用程序的这些主要组件如何协同工作,有助于处理正在发生的事情及其时间和原因。

当然,还有其他堆栈,例如 LEMP(Linux,NGINX,MySQL,PHP / Python)和MEAN,但是我学习 LAMP 是因为它是最受欢迎的堆栈之一。 熟悉堆栈的基本底线是了解 Web 应用程序的不同部分如何工作。

后端语言:Python

Python 非常适合脚本,Web 应用程序等。每当有人决定要参与 Web 或软件开发时,他们几乎总是花太多时间来决定应该专注于哪种语言。 虽然学习特定的语言对于特定的角色肯定有其好处,但是当我们刚开始学习如何开发应用程序或软件时,选择任何一种语言并坚持使用是最重要的部分。

话虽如此,我个人认为系统管理员和未来的 DevOps 工程师应该真正坚持使用Python。 由于人性化,它可能是最易于学习和使用的语言之一。目前有许多用Python 编写的安全工具和框架。 但实际上,语言选择并不是最关键的。 在学习 DevOps 的第一年,我已经使用过 Ruby,Python,Shell 甚至是 PHP。我们要做的就是选择一些工具并坚持实践。

脚本:Bash

您应该习惯使用命令行界面。尽管 Python 很棒,但作为 Mac 的系统管理员,有一个显而易见的优势是 Mac 基于Unix 并具有终端。 我编写了脚本来帮助配置系统并自动执行重复的任务。例如,我写了一些脚本,可以创建用户,安装应用程序,并配置打印机设置。 通常,这些任务将花费几个小时,但是谁有如此多的时间呢? 通过使用 Bash 脚本,我可以利用 Apple Remote Desktop 之类的工具一次配置五台甚至十台机器,从而将启动时间减少到数分钟而不是数小时。

自动化:Ansible

Ansible 是一个开源的 IT 自动化引擎,可以减免工作中的繁琐任务,同时能够显著提高 IT 环境的可伸缩性,一致性和可靠性。 我们可以学习 Ansible 的资源调配,配置管理以及应用程序测试和部署。

一旦开始编写脚本,例如用户入门和应用程序安装,我便开始将脚本与 Apple Remote Desktop(ARD)和 AutoDMG 等工具结合起来,以自动进行计算机镜像处理。 Ansible 可以将我的更多任务组合到一个我可以执行的 playbook 中,playbook 能够进行配置管理和多主机部署。

以下链接是 GitHub 存储库,其中包含一些出色的Mac sysadmin 的 playbook。

github.com/geerlingguy/

VIrtualBox: Vagrant

Vagrant 是用于在单个工作流程中构建和管理虚拟机环境的工具。 Vagrant 提供了易于配置,可复制且可移植的工作环境。列两个场景,你是否需要 Ubuntu 18.04 实例进行测试? 登台服务器的 CentOS 实例如何? Vagrant 提供了一个用于开发和测试基础结构管理脚本的一次性环境和一致的工作流程。

持续集成和部署:Jenkins

持续集成(CI)和持续部署(CD)是 DevOps 最重要的部分之一,但也是掌握和理解最复杂的部分之一。 Jenkins 可能不是CI/CD的最佳工具,但它无疑是最受欢迎的并且是行业必备的工具之一。

作为一种自动化工具,Jenkins用于构建,测试和启动应用程序的部署,从而使开发人员可以更轻松地将更改和错误修复持续集成到软件中,从而消除了可怕的“推向生产然后祈祷”的固有思维。在 DevOps 的世界里,Jenkins 具有显而易见的重要地位,因此强烈建议您全面了解 Jenkins。

译者注:如果想要体验全流程服务,可以尝试一些一站式解决方案,例如 CODING DevOps

云:AWS

在云基础架构和服务方面,Amazon Web Services(AWS)无疑是一个优秀的平台。 AWS 无需担心服务器配置和物理资产限制,从而帮助公司降低成本,缩短部署时间并增加运营规模。 如果想要尝试进行 DevOps 或软件开发,AWS 是一个不错的选择。AWS提供了数百种服务,但是重要的是要了解诸如 EC2,S3,RDS,Route53 和 Lambda等核心服务。

译者注: 这篇文章面向的中国受众可能在体验 AWS 时遇到一些问题,如服务不够本土化,备案不流畅等等。因此您可以自行尝试一些针对中国用户市场的产品。CODING DevOps 提供了高可用,安全可靠的本地化云服务,国内速度稳定流畅,让云上开发更简单。


总结

真正了解软件开发和 DevOps 来龙去脉的最佳方法是启动自己的项目。即使整天观看YouTube 教程并彻夜阅读经验帖子无疑是一种手段,但是在真正开始编写一些代码,配置服务器并推动部署之前,您所学到的东西都不会真正被吸收消化。

以下是对新入门者的一些学习建议:

从全新的 Ubuntu 安装开始,配置 LAMP 堆栈并部署自己的网站

安装和构建 Jenkins 服务器,或者使用可安装 Jenkins 插件的工具并练习推送代码以进行部署

创建一个免费的云服务器账户,然后开始处理EC2,S3存储桶和其他服务

开始构建脚本,实现部分日常任务自动化。

笔者在 IT 领域浸淫了五年,并且学到了很多与DevOps 相关的知识。这些探索与经验能够帮助更多人减少走弯路的机会。这篇文章就是在指导您如何在最短时间内最有效地去实践 DevOps 过程。


PS:本文为翻译文章,如有版权问题请联系我们

发布于 2020-02-13

文章被以下专栏收录