基础设施即代码

进阶预计进阶 2-3 个月

星团 云与基础设施

学习定位零前置,可直接入门→ 基础设施即代码 →学完本技能可衔接的下游技能建设中

岗位需求

0 核心 · 2 加分

在职岗位将其列为技能要求

核心岗位薪资带

—

核心要求岗位的月薪区间

需求趋势

上升 0稳定 0收缩 0

核心要求岗位的趋势分布

面试题库

高频真题 · 参考答案随题展开
1. 基础设施即代码的价值是什么?可变与不可变基础设施有何区别?

IaC 用声明式代码描述基础设施期望状态,由引擎负责创建与收敛。价值:可版本化(变更走评审与 git 历史)、可重复(一键重建整套环境,环境一致)、可审计(谁改了什么一目了然)、文档化(代码即架构图)、规模化(复制环境像复制文件)。声明式优于脚本式(CloudFormation、Terraform 对比 shell 脚本):描述「要什么」而非「怎么做」,引擎算差异(plan 显示变更)并保证幂等收敛。可变基础设施是原地修改(SSH 上去改配置、升级软件包),服务器随时间漂移、配置腐化、雪崩服务器各不相同;不可变基础设施是变更即重建(新镜像加新实例替换旧实例,容器与镜像思路),实例可任意销毁重建,回滚等于换回旧镜像。Terraform 属声明式编排,Ansible 偏过程式配置,两者常组合:Terraform 建资源,Ansible 做机器内初始化。

2. Terraform 的核心工作流与概念是怎样的?

三大概念:provider 对接云 API(aws、kubernetes 等);resource 资源块(一个资源一段声明)与 data(读已有资源)、variable(输入)与 output(输出);state 是 terraform 记录的真实资源映射文件(资源地址到云资源 id 的对照表)。工作流:terraform init 拉 provider 与模块;plan 对比配置与 state 生成变更计划(加减改清单,只读操作);apply 执行变更并更新 state;destroy 释放。refresh 与 drift:plan 前刷新实际状态检测漂移。模块是复用单元:输入输出封装、版本化发布,项目结构按环境拆目录(dev、staging、prod 各自 state)或用 workspace。关键认知:state 是核心资产——丢了就失控(资源找不到对应关系),敏感值会明文进 state(var 敏感字段也要保护 state 文件本身),远端 backend(S3 加锁表、consul)做共享与加锁,禁止本地 state 提交 git。能讲 state 作用与风险即达标。

3. Terraform state 管理有哪些最佳实践?

远端存储:用 backend(S3 加 DynamoDB 锁、OSS、Consul、Terraform Cloud)集中保存,团队共享且带锁防并发写坏;本地 state 只适合实验。状态与权限隔离:按环境与职责拆分多个 state 文件(网络层、应用层分层),blast radius 受控、apply 时间短,跨层用 remote state data 或输出引用;配 RBAC 限制谁能改生产 state。安全:state 明文包含敏感值(RDS 密码、证书),要加密存储(S3 加密)、控制访问、用 Vault 动态凭证或密钥单独管理,CI 里用 OIDC 短期凭证而非长期 AK。变更纪律:一切经 plan 评审、apply 在 CI 执行并留日志;state 操作命令(move、import)改配置前先备份;用 terraform state mv 处理资源重命名避免销毁重建,import 纳管存量资源。漂移治理:定期 plan 检测手工改动,修复要么改回云端要么固化进代码。能讲远端加锁、拆 state、敏感值三点即完整。

4. Terraform、Ansible、Pulumi 各适合什么场景?

Terraform:声明式、多云 provider 最全、HCL 学习门槛低、plan 变更预览清晰,是云资源编排(VPC、ECS、数据库、负载均衡)的事实标准;弱点是逻辑表达笨拙(循环与条件有限)、state 管理是额外复杂度、HCL 不是通用语言。Ansible:过程式 YAML playbook,无 agent、SSH 直连,强项是机器内配置(装包、改配置文件、重启服务)、批量运维操作与应用部署;对比 Terraform 不擅长云资源依赖编排与状态收敛(幂等靠模块纪律)。Pulumi:用真实语言(TS、Python、Go)写基础设施,程序逻辑、类型检查、测试复用顺手,适合开发团队自管基础设施与复杂动态资源生成;生态与模块量不及 Terraform。实践组合:Terraform 或 Pulumi 建云资源与 K8s 集群,Ansible 或镜像烘焙(packer)做主机层,K8s 内用 Helm 与 Argo CD 管应用。按层选工具而非一统天下。

5. 如何安全地把 Terraform 应用到生产?plan 评审怎么做?

流程化防事故:代码与状态分离,变更走 PR——CI 自动跑 fmt、validate、lint(tflint、checkov 做安全扫描)与 plan,把 plan 输出贴回 PR 供人评审重点看 destroy 与 force replacement;合并后由 CI 用受控身份 apply,禁止个人本地直连生产(本地只读凭证或只读角色)。分级保护:生产 apply 需手动审批(environment protection、Terraform Cloud 的审批流);destroy 加 prevent_destroy 生命周期与 CI 拦截;关键资源(数据库、安全组)加 lifecycle prevent_destroy 与 ignore_changes(如外部会改的字段)。防护栏:变量校验(validation 块)、模块收敛(团队只准用审核过的模块版本)、策略即代码(Sentinel、OPA)检查禁止开放 0.0.0.0 加 22 端口这类规则。事后:state 定期备份与版本留存、apply 日志审计。能讲 PR 加 plan 评审加 CI apply 加审批的闭环即优秀。

🔒 解锁完整面试题库与参考答案(Pro)

含高频追问与作答要点,系统准备面试。

官方文档

1 条

推荐教程

2 条

推荐课程

1 条

上手实践

1 条

🔒 完整前置链分析 + 逐岗位引用明细

本页已免费展示学习定位与市场聚合;Pro 深读补齐完整前置依赖链分析与逐岗位引用明细 (核心/加分与深度档、岗位画像)。

知识分享

社区经验 · 管理员审核后展示

暂无分享——第一个来聊聊你的经验和踩坑吧。

有经验想分享?登录后可提交你的知识分享,管理员审核通过后将署名展示。

难度档决定星等与难度分权重(入门 1 / 进阶 2 / 精通 3);学习资源由编辑部遴选并持续维护, 经验心得欢迎在上方「知识分享」区署名分享。