如何在六个月甚至更快的时间内成为一名DevOps工程师。第2部分。配置

如何在六个月甚至更快的时间内成为一名DevOps工程师。第1部分。简介

快速刷新您的记忆


在第一部分中,我认为DevOps工程师的工作是创建将数字代码从开发人员的机器转移到生产环境的全自动数字管线。有效地完成这项工作需要了解操作系统,编程语言和云存储服务等基础知识,并且需要对工具和技能有充分的了解。

让我提醒您,您的目标是首先学习从左到右的蓝色事物,然后再学习从左到右的紫色事物。现在,我们将研究六个月专门针对配置的培训。



在配置阶段会发生什么?由于我们创建的代码需要机器才能运行,因此配置阶段实际上会创建运行我们的代码的基础结构。

过去,构建支持基础结构是一项漫长,耗时且容易出错的尝试。现在我们有了惊人的云,所有准备工作都可以通过单击按钮完成。或至少点击几下。但是,事实证明,按下按钮来完成这些任务是一个坏主意,因为这意味着:
  • 容易犯错误的倾向(人们会犯错误);
  • 忽略版本(按钮单击不能存储在Git存储库中);
  • 不可复制性和不可重复性(更多的汽车=更多的点击次数);
  • ( , ).




例如,考虑提供您的开发环境,然后是int环境,然后是QA,然后是分阶段,然后是在美国生产,然后在欧盟生产的所有必要工作,这很快就会变得很繁琐和令人讨厌。因此,不是机械地单击鼠标键,而是使用一种称为“基础结构即代码”的新方法,这将在配置系统的此阶段进行讨论。 “基础架构即代码”是指使用配置文件配置系统,而不是在服务器上手动编辑配置或以交互方式进行配置。此方法可以是基础结构的声明性描述或脚本描述。根据DevOps最佳做法,“基础架构即代码”要求提供计算资源所需的任何工作,仅使用代码执行。 “计算资源”是指应用程序在产品中正确运行所需的一切:它自己的计算资源,存储,网络,数据库等。因此,其名称为“基础结构即代码”。

此外,这意味着我们将不会:通过基础架构的机械部署“捕捉”我们的道路,而将:

  • 描述Terraform中所需的基础结构状态
  • 将其存储在我们的源代码控制版本控制系统中;
  • 经过正式的请求请求过程以接收反馈;
  • 测试性能;
  • 执行配置,以确保使用所有必需的资源来运行系统。

为什么是这样,不是吗?


显而易见的问题是:“为什么要使用Terraform?为什么不使用Chef,Puppet,Ansible,CFEngine,Salt或CloudFormation?” 好问题!在他的讨论中,整个虚拟墨水桶都溢出了。我认为您应该学习Terraform,因为:

  • 它非常时尚,因此您将拥有大量的就业机会;
  • 更容易消化;
  • 它是一个跨平台的产品。

当然,您可以选择任何其他选项也可以成功。但是我必须注意以下几点。这个行业正在迅速而随机地发展,但是我看到了这样的发展:传统上,诸如Terraform和CloudFormation之类的东西被用来提供基础架构,而Ansible和类似的系统被用来配置它。



因此,可以将Terraform用作基础工具,将Ansible用作在该基础上建造房屋的起重机,随后将应用程序部署为屋顶(也可以使用Ansible进行部署)。
换句话说,您可以使用Terraform创建虚拟机,然后使用Ansible来配置服务器以及部署应用程序。传统上,这些东西都是以这种方式使用的。

但是,Ansible可以做Terraform可以做的很多事情(如果不是全部的话),但是反之亦然。不要让这个困扰你。只是知道Terraform是业界领先的基础架构即代码工具之一,所以我强烈建议您从它入手。



实际上,Terraform + AWS的经验是DevOps最受欢迎的工程技能之一。但是,即使您打算将Ansible捐赠给Terraform,您仍然需要知道如何以编程方式配置大量服务器,对吗?原来,这是没有必要的!

不变的部署


我预测,诸如Ansible之类的配置管理工具将失去其重要性,而诸如Terraform或CloudFormation之类的基础架构配置工具将使其增加。所有这些都是由于所谓的“不变部署”。简而言之,这意味着永远不要更改已部署的基础架构的做法,也就是说,您的部署单元是虚拟机或Docker容器,而不是一段代码。

在这种情况下,您无需将代码部署到一组静态虚拟机上,而是将整个虚拟机及其中包含的代码一起部署。您无需更改配置虚拟机的方式,而是以所需的配置部署新的虚拟机。您不是要固定产品机器;而是要部署新的,已经固定的机器。

您无需在dev中启动一组虚拟机,而在prod中启动另一组虚拟机,它们都是相同的。实际上,您可以完全安全地禁用对所有生产机器的所有SSH访问,因为这里无事可做-无需更改设置,无需查看日志(我将在以后再讨论日志)。如果正确使用,这是一个非常强大的模板,我强烈建议您使用!

不变的部署要求配置与您的代码分开。请阅读《十二要素应用程序》的清单,其中详细介绍了此(以及其他令人惊奇的想法!)。这是练习DevOps的必读内容。

断开代码与配置的连接非常重要,因为您不想在每次“欺骗”数据库密码时都重新部署整个应用程序堆栈。相反,请确保应用程序从外部配置存储(SSM / Consul等)中检索到它。此外,您可以轻松地看到随着不可变部署的出现,诸如Ansible之类的工具将开始扮演不太重要的角色。原因是您只需要配置一台服务器并将其部署为自动伸缩组的一部分,就可以进行多次部署。

如果创建容器,那么根据定义,您需要不可变的部署。您不希望自己的dev容器不同于QA容器,而QA容器也不同于prod容器。在所有环境中,您都需要完全相同的容器,因为这样可以避免配置偏差并在出现问题时简化回滚。

除了容器之外,对于刚起步的人来说,使用Terraform准备AWS基础设施是一个很好的DevOps培训模型,也是您真正需要学习的知识。

但是请稍候...如果您需要查看日志以解决此问题怎么办?在这种情况下,您无需输入计算机即可查看日志;只需查看所有日志的集中式日志记录基础结构即可。有人已经发布了关于此资源的详细文章,内容涉及如何在AWS ECS中部署ELK堆栈,您可以阅读以了解其实际操作方式。同样,您可以完全关闭远程访问,并比那里的大多数人感到安全得多。

总而言之,我们可以说我们的全自动旅程“ DevOps”始于准备完成代码设置阶段所需的计算资源。实现此目标的最佳方法是使用不可变的部署。如果您对从哪里开始感兴趣,请以Terraform + AWS组合为起点!

这就是配置阶段的全部内容,在下一篇文章中,我们将考虑第二阶段-版本。

如何在六个月甚至更快的时间内成为一名DevOps工程师。第3部分。版本

一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的VPS,最低价格为4.99美元这是我们为您发明的入门级服务器 独特类似物:关于VPS(KVM)E5-2697 v3(6核)的全部真相10GB DDR4 480GB SSD 1Gbps从$ 19还是如何划分服务器?(RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

阿姆斯特丹的Equinix Tier IV数据中心的戴尔R730xd便宜2倍吗?在荷兰2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起!阅读有关如何构建基础设施大厦的信息。使用Dell R730xd E5-2650 v4服务器花费一欧元9000欧元的c类?

All Articles