【菜鸟不菜系列】Linux 基础教程:第十六章:云计算与 DevOps 基础

Linux 基础教程:从零到进阶,成为最强管理员

由 linux.mba「Most Badass Admin」最强管理员社区撰写

第五部分: 进阶专题与未来方向

第十六章:云计算与 DevOps 基础

16.1 云计算平台简介:AWS、Azure、Google Cloud、阿里云、腾讯云、京东云

一、啥是云计算?

我们先不急着谈 AWS、Azure、GCP、阿里云、腾讯云、京东云、华为云,先整明白“云计算”这仨字。

云计算 ≠ 天上的云;
它是“把计算、存储、网络这些 IT 基础设施放在互联网上,按需使用、按量计费”的一种方式。

类比一下传统 IT:

你过去要搭个网站?买服务器、接电、布线、装系统、上机房……整得跟装修新房一样。
现在?打开网页,几分钟你就能在云上搞定一台服务器,还能随时扩容、删除,不用交物业费(只是交云厂商的“房租”)。

云计算的核心理念就是四个字:即开即用


16.1.1 什么是 DevOps?

DevOps 是干嘛的?一句话:

开发(Dev)和运维(Ops)不再互相甩锅,而是通力合作,用自动化手段快速上线、稳定运行。


传统模式像什么?

开发写完代码:“我这边跑得好好的,运维你去部署吧!”
运维上线后炸了:“你代码有问题啊!”
开发反手一句:“怎么可能,我本地都没问题!”

——这叫“甩锅式开发部署流程”。


DevOps 怎么解决?

  1. 自动化测试、打包、部署 —— CI/CD 工具干的事;
  2. 基础设施用代码管理 —— Terraform 等工具干的事;
  3. 开发和运维协作,而不是互相拉黑 —— 公司文化改变的事。

DevOps 不是一个工具,而是一整套理念 + 方法论

它包括但不限于:

领域 常见工具
代码托管 Git、GitHub、GitLab
持续集成 Jenkins、GitLab CI、GitHub Actions
自动部署 Ansible、Docker、Kubernetes
云基础设施 Terraform、CloudFormation
监控告警 Prometheus、Grafana、ELK

小结:

DevOps 就像一支“自动化部队”,目标是:让上线这件事变得不再痛苦。

你写完代码,它帮你测试、打包、部署到云上,还能自动扩容、回滚、监控。

接下来我们就带你实际体验一把 DevOps 的“基础设施自动化”和“持续集成部署”。


二、主流云平台谁在用?

平台 主要特点 国内常见场景
AWS Amazon家的云,功能最全、生态最大 外企、跨国公司首选
Azure 微软的云,和 Windows 系统整合很好 政企、大型单位爱用
GCP Google的云,适合大数据、AI 海外科技公司、科研单位喜欢
阿里云 / 腾讯云 / 京东云/华为云 国内版本的云平台 国内企业首选,防火墙政策友好,中文支持

:pushpin: 注:如果你是个人学习/实验,可以注册 AWS、Azure、GCP 的免费账号,他们通常都有“新用户一年免费套餐”。国内的云平台也有新客优惠,可以花99元不等的价格购买一年。


三、云平台能干啥?常见服务举几个例子:

功能 服务名称 用法简介
服务器 EC2(AWS)、VM(GCP)、Azure VM 就是传统的“云服务器”
存储 S3、Blob、GCS 对象存储,放图片、备份的好地方
数据库 RDS(MySQL/PostgreSQL) 托管数据库,不用你管安装
网络 VPC、子网、防火墙、安全组 像你家路由器 + 防盗门
CI/CD CodePipeline、Cloud Build、DevOps Projects 自动化部署、持续集成工具
容器 EKS、AKS、GKE 容器编排,用 Kubernetes

四、我该怎么选云平台?

  • 如果你是程序员、DevOps 小白:AWS 是全球教程最多的选择;
  • 如果你 Windows 熟得很:Azure 也不赖;
  • 如果你搞 AI、机器学习、想玩 GPU:GCP 的 AI 平台挺牛;
  • 如果你是中国公司:考虑阿里云、腾讯云、京东云、华为云,中文客服很香;
  • 如果你只是学习、测试:选免费额度最多的(AWS/GCP)。

小结

云平台就是“远程的计算机服务中心”,你不再需要自己买服务器、布线、上架。AWS、Azure、GCP 是三大国际巨头,各有千秋。下一节我们将带你用 Terraform 这样的“基础设施即代码”工具,来玩转云计算资源配置。

16.2 使用 Terraform 配置基础设施


一、什么是 Terraform?

你可以把 Terraform 想象成是“云世界的装修工程师”。
只不过它不是用锤子和钉子来装修,而是用代码(.tf 文件)来描述你想要的云基础设施,比如服务器、数据库、网络等等。

:robot: 类比一下:
你不再用鼠标点来点去开服务器,而是写一段“云配置说明书”,交给 Terraform 来“一键施工”。


二、安装 Terraform(以 Ubuntu 为例)

先确保你的系统是最新的:

sudo apt update && sudo apt upgrade -y

然后开始安装:

sudo apt install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg

添加 Terraform 官方源:

echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list

更新并安装 Terraform:

sudo apt update
sudo apt install terraform -y

检查是否安装成功:

terraform -v

:white_check_mark: 如果看到输出像:
Terraform v1.7.0(版本号可能不同)说明你装好了。


三、Terraform 的核心概念

名称 小白解释
Provider 云服务商,比如 AWS、Azure
Resource 你要建的资源,比如 EC2 实例
Module 模块,一组资源的集合
Plan 预览 Terraform 要做什么
Apply 执行,把资源创建出来
Destroy 删除之前建好的所有资源

四、写你的第一个 Terraform 配置文件

我们先来写一个最基础的 AWS 配置文件(不用管 AWS 账号细节,我们先看结构)。

:page_facing_up: main.tf 文件内容如下:

provider "aws" {
  region = "us-east-1"   # 使用美国东部区域(可以换成你自己的区域)
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"  # Ubuntu 的 AMI ID(具体值请去 AWS 查)
  instance_type = "t2.micro"              # 实例类型,免费套餐常用
}

:warning: 小白提示:

  • provider:你要用哪个云服务商,这里是 AWS;
  • resource:你要建什么,这里是建一个 EC2 实例;
  • ami:镜像 ID,相当于“用哪张系统盘”,每个区域不一样;
  • t2.micro:AWS 免费套餐的最小服务器规格。

五、执行 Terraform 脚本步骤

确保你当前目录下有 main.tf,然后依次执行:

terraform init

说明:初始化当前目录,下载需要的插件(比如 AWS 的插件)。

terraform plan

说明:预览即将会创建哪些资源(不会执行),就像演练流程。

terraform apply

说明:真正执行,创建云资源。系统会要求你输入 yes 才会继续。

terraform destroy

说明:当你不想用了,一键拆除所有资源。


六、配置 AWS 凭证(可选)

如果你要实际连接 AWS,需要提供访问密钥:

export AWS_ACCESS_KEY_ID="你的 access key"
export AWS_SECRET_ACCESS_KEY="你的 secret key"

或者使用 aws configure 命令来配置 AWS CLI(Terraform 会自动读取)。


小结

Terraform 就像是“云基础设施的工程图纸”,通过编写 .tf 文件来描述要创建的云资源,然后一键部署。它非常适合 DevOps 和自动化部署,未来工作中用得非常多。

16.3 CI/CD 基础:使用 Jenkins、GitLab CI


一、CI/CD 是什么?

这四个字母看起来很高级,其实它的核心思想就一句话:

自动帮你测试、打包、部署代码,你只需要专注写代码。”


缩写 全称 翻译/解释
CI Continuous Integration 持续集成:自动测试、打包
CD Continuous Delivery / Deployment 持续交付 / 部署:自动上线

类比一下:
你写完代码后,不用每天手动打包发给测试,不用手动部署到服务器。CI/CD 会自动帮你做这些事,像个自动化流水线一样。


二、Jenkins 简介与安装

2.1 Jenkins 是啥?

Jenkins 是目前最流行的开源 CI/CD 工具之一。它是个基于 Web 的平台,你可以在它的界面上配置一堆自动化任务:

  • 拉取代码
  • 自动测试
  • 编译打包
  • 发到服务器

2.2 安装 Jenkins(以 Ubuntu 为例)

先更新系统并安装 Java 环境(Jenkins 依赖 Java):

sudo apt update
sudo apt install -y openjdk-11-jdk

添加 Jenkins 官方源:

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null

更新并安装 Jenkins:

sudo apt update
sudo apt install -y jenkins

启动并设置开机启动:

sudo systemctl start jenkins
sudo systemctl enable jenkins

确认状态:

sudo systemctl status jenkins

如果你看到 active (running),说明跑起来了。

2.3 打开 Jenkins 网页界面

浏览器打开:

http://你的服务器IP:8080

第一次打开会要求输入管理员密码:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

复制出来粘贴进去。


三、配置你的第一个 Jenkins Job(任务)

这个 Job 就是自动化流程。

一个常见的流程示例:

  1. 拉 Git 仓库的代码
  2. 编译或测试(可选)
  3. 部署到远程服务器

你可以在 Jenkins 网页里通过点点点(真的就是点点点)来配置这些步骤。


四、GitLab CI 简介

GitLab 除了是代码托管平台,还有内建 CI/CD 功能!

只要你在项目里添加一个 .gitlab-ci.yml 文件,GitLab 会自动读取并运行。


示例 .gitlab-ci.yml 文件:

stages:
  - build
  - deploy

build-job:
  stage: build
  script:
    - echo "正在打包项目..."
    - make

deploy-job:
  stage: deploy
  script:
    - echo "部署到服务器中..."
    - ./deploy.sh

:light_bulb:说明:

  • stages:定义你这个流程有哪几步
  • 每个 job 指定属于哪个阶段(stage),并运行哪些命令(script

GitLab 会根据这个文件,在后台创建类似流水线的流程,自动执行脚本。


五、总结:Jenkins vs GitLab CI

特点 Jenkins GitLab CI
使用方式 自己搭建部署 GitLab 平台自带,开箱即用
配置方式 Web 界面 + 插件 .gitlab-ci.yml 文件配置
适合场景 更灵活,适合自定义流程、插件多 更适合 GitLab 项目,集成好

:white_check_mark: 到这里,你就入门了 CI/CD 的世界,未来你部署网站、发新版,基本都离不开这些自动化流程。