来源快照|自动化与IaC
本页是原图的只读导入快照,不是已核验文档。原有历史命令、版本标记与疑点保留;已识别口令替换为占位符。图片只保留引用。
- 自动化与IaC ^xm-874f40c6a7b54588b9fb1e9f0e
-
◆ 2026 深度扩展|自动化与 IaC
- Shell 生产脚本 ^xm-52d8d318e6834fc7828ac3a85c
- 🎯 目标 ^xm-e6f35ae9f3d8483bb20c7d23b1
- 写出安全、可测试、可观测、幂等的运维脚本。
- 🧠 知识拆解 ^xm-e6cc6e064ec2484baf61bd73af
- strict mode 与未定义变量
- 引用/空格/通配符
- 退出码/信号/trap
- 临时文件与锁
- 幂等与 dry-run
- 结构化日志
- ⌨️ 命令 / 配置 / 关键对象 ^xm-e3f4e03d60e6475eb9c0d0b4d6
- set -Eeuo pipefail
- shellcheck/shfmt
- mktemp/flock
- trap
- getopts
- timeout
- 🔥 高频故障与风险 ^xm-d91248ca999c4f44b406bac170
- 未引用变量误删
- 并发重复执行
- 管道错误被吞
- 临时文件泄漏
- 脚本无超时
- 🔎 排障路径 ^xm-e1a1986f03334bd992a101017f
- 打印安全上下文但不泄密
- 检查退出码
- 最小输入重放
- shellcheck 静态分析
- 🧪 实战练习 ^xm-23a03b2b603a4b9fb6619ea88d
- 写安全日志清理器
- 为脚本加入 dry-run/lock/timeout/tests
- ✅ 验收标准 ^xm-db576b9f9bef42c1adb52f300b
- ShellCheck 通过
- 重复执行结果一致
- 错误时非零退出且可恢复
- 🎯 目标 ^xm-e6f35ae9f3d8483bb20c7d23b1
- Python 运维开发 ^xm-93148e5e3172411d835aa4dc45
- 🎯 目标 ^xm-79d7b7cfd7544918b1bc18e1c0
- 把复杂脚本升级为可维护的 CLI、API 客户端和自动化服务。
- 🧠 知识拆解 ^xm-9bb5586b913a42f39250be5d04
- 包结构与依赖锁
- typing/dataclass
- async/concurrency
- HTTP timeout/retry
- 配置与 secret
- pytest/mock
- ⌨️ 命令 / 配置 / 关键对象 ^xm-a5a79a7dc3654e2f98a33b2e9d
- pyproject/uv/venv
- pytest
- ruff/mypy
- httpx/requests
- logging
- Typer/Click
- 🔥 高频故障与风险 ^xm-766d04877e4847d9bfbe85c741
- 无限重试
- 异步阻塞
- 密钥进日志
- 脚本只在作者机器运行
- 🔎 排障路径 ^xm-082137545cbc4dc4b91cdce5a7
- 隔离外部依赖
- 记录 request id/latency
- 检查 exception chain
- 重放失败输入
- 🧪 实战练习 ^xm-d9dcfaa83ff942afb06b9c3a32
- 并发健康检查 CLI
- 告警 Webhook 归一化服务
- ✅ 验收标准 ^xm-8a5e284a10bf4058b47a019a57
- 依赖可复现
- 核心逻辑有单测
- 超时/限流/取消正确
- 🎯 目标 ^xm-79d7b7cfd7544918b1bc18e1c0
- Ansible 配置管理 ^xm-93081b69588a428db4f18f20a8
- 🎯 目标 ^xm-fd510f3b12194506836fa4c0f6
- 用声明式、幂等、可审计方式管理主机配置。
- 🧠 知识拆解 ^xm-aee8830aeb32449ea79f33545d
- inventory/vars precedence
- play/role/module
- handler/tag
- template/vault
- check/diff
- dynamic inventory
- ⌨️ 命令 / 配置 / 关键对象 ^xm-7156e86d88b444e4ab292ebeac
- ansible-inventory
- ansible-playbook —check —diff
- ansible-vault
- molecule
- ansible-lint
- 🔥 高频故障与风险 ^xm-5eaa2f3e153f4571883a4ff34d
- 变量覆盖意外
- shell 模块不幂等
- handler 未触发
- 批量变更爆炸半径过大
- 🔎 排障路径 ^xm-cad674c6d3d247e29fa2c338d6
- 限制 hosts 与 serial
- 检查 variable source
- check/diff 预演
- 逐批验证
- 🧪 实战练习 ^xm-8ffc7f828a884a15849055a326
- 角色化部署 Nginx
- Molecule 测试与滚动变更
- ✅ 验收标准 ^xm-d11adcfc30ea48ec8dc9205760
- 第二次运行 changed=0
- secret 不明文
- 失败可从批次恢复
- 🔗 对应优秀开源项目 ^xm-5591d86fb52241eba0b2803c1f
-
ansible/ansible
备注(源图文本,未作运行验证):
定位:Agentless 配置管理与自动化 源码阅读:inventory→playbook→module→plugin 执行链 实战:幂等部署 Nginx、用户、证书并支持回滚 注意:不要用 shell 模块代替已有幂等模块 整理日期:2026-07-09- 原链接(未复核):
https://github.com/ansible/ansible
- 原链接(未复核):
-
- 🎯 目标 ^xm-fd510f3b12194506836fa4c0f6
- OpenTofu / Terraform 思维 ^xm-8d4f2d410fb04edd8d559d02e1
- 🎯 目标 ^xm-de168844688f4f3dbb1a2e1d64
- 安全管理声明式基础设施、状态和变更计划。
- 🧠 知识拆解 ^xm-3d906de21d5e48c2a51787594a
- provider/resource/data/module
- state/refresh/import/move
- dependency graph
- plan/apply
- workspace vs environment
- drift
- ⌨️ 命令 / 配置 / 关键对象 ^xm-e8b34c847cb0423ba1ca59c643
- tofu fmt/validate/plan/apply
- state list/show/mv
- import
- providers lock
- test
- 🔥 高频故障与风险 ^xm-9739dc0a7c7345aaaec357ad1a
- state 冲突/丢失
- 敏感值泄露
- 资源意外重建
- 模块破坏性升级
- 🔎 排障路径 ^xm-a4a0c7ef85464c4f88f2bbb5ab
- 先读 plan 与 state
- 核对 provider/version
- 使用 moved/import block
- 分离 blast radius
- 🧪 实战练习 ^xm-199aa49e9f404dcebd65ec034d
- 模块化网络+计算资源
- 远程 state/lock/备份/漂移演练
- ✅ 验收标准 ^xm-8f70ea59cfa941ab8140945614
- plan 被审查
- state 加密锁定
- 模块有版本和测试
- 破坏性变更有批准
- 🔗 对应优秀开源项目 ^xm-91769007ade5459eb4b8aa9676
-
opentofu/opentofu
备注(源图文本,未作运行验证):
定位:开源 IaC、plan/state/resource graph 源码阅读:plan、state、provider、graph 四条主线 实战:模块化创建测试基础设施并做 drift 检测 注意:state 是敏感资产,必须加密、锁定和备份 整理日期:2026-07-09- 原链接(未复核):
https://github.com/opentofu/opentofu
- 原链接(未复核):
-
pulumi/pulumi
备注(源图文本,未作运行验证):
定位:使用通用语言声明基础设施 源码阅读:resource graph、provider、state backend 实战:与 OpenTofu 实现同一套环境并比较 注意:选择取决于团队语言、治理和生态,不只看语法 整理日期:2026-07-09- 原链接(未复核):
https://github.com/pulumi/pulumi
- 原链接(未复核):
-
- 🎯 目标 ^xm-de168844688f4f3dbb1a2e1d64
- 镜像、初始化与不可变基础设施 ^xm-5d384206dca74334a8faceb9a2
- 🎯 目标 ^xm-8b755c5c91744ba7b1af4df0f7
- 用标准镜像和启动时配置减少环境漂移。
- 🧠 知识拆解 ^xm-49516401e3ba4b1b88ad97a576
- golden image
- Packer build
- cloud-init/user-data
- immutable vs in-place
- artifact provenance
- patch cadence
- ⌨️ 命令 / 配置 / 关键对象 ^xm-1815cd0b0749422d91fd2f2b37
- packer init/validate/build
- cloud-init status/analyze
- image scan
- SBOM
- 🔥 高频故障与风险 ^xm-d3df0e2811f443938de1547eed
- 镜像携带 secret
- 启动脚本不可重入
- 镜像版本不可追
- 长期不重建
- 🔎 排障路径 ^xm-9cf9667f181b4c90871d497bcf
- 核对 image id/build commit
- 读取 cloud-init logs
- 对比实例与镜像基线
- 🧪 实战练习 ^xm-97ce20c7fe4840a0891ed62d2b
- 构建加固 Linux 镜像
- 替换式升级与回滚
- ✅ 验收标准 ^xm-8368813e88ae4c36a1b8778955
- 镜像构建可重复
- 启动配置幂等
- 每个实例可追溯到制品
- 🔗 对应优秀开源项目 ^xm-1a403b0b46184a38b24037a0b5
-
hashicorp/packer
备注(源图文本,未作运行验证):
定位:不可变镜像构建 源码阅读:source→build→provisioner→artifact 实战:构建带基线加固与监控 Agent 的镜像 注意:镜像中不可固化密钥和环境专属配置 整理日期:2026-07-09- 原链接(未复核):
https://github.com/hashicorp/packer
- 原链接(未复核):
-
aquasecurity/trivy
备注(源图文本,未作运行验证):
定位:镜像、仓库、IaC、K8s、SBOM 扫描 源码阅读:target→analyzer→DB→report/policy 实战:CI 中扫描并上传 SARIF 注意:处理误报、例外期限和修复责任人 整理日期:2026-07-09- 原链接(未复核):
https://github.com/aquasecurity/trivy
- 原链接(未复核):
-
- 🎯 目标 ^xm-8b755c5c91744ba7b1af4df0f7
- 事件驱动自动化与 ChatOps ^xm-9b46a189efde4f178d3431a529
- 🎯 目标 ^xm-297fc5d0f326422d9b629a2e21
- 将告警、工单、变更与自动化连接成有权限和审计的流程。
- 🧠 知识拆解 ^xm-71fb609ca5674b76b6f171b2f7
- webhook/event schema
- queue/retry/DLQ
- idempotency key
- approval
- RBAC
- runbook automation
- ⌨️ 命令 / 配置 / 关键对象 ^xm-a34b7a1e8c5f424692a4dd4429
- 事件规范化
- workflow engine
- audit log
- rate limit
- circuit breaker
- 🔥 高频故障与风险 ^xm-bedc7633090447539ef54872a8
- 告警风暴触发风暴操作
- 重复执行
- 机器人权限过大
- 自动修复掩盖根因
- 🔎 排障路径 ^xm-5132b950eed545e7803358514a
- 追踪 event id
- 检查去重/抑制
- 重放到测试环境
- 确认人工批准
- 🧪 实战练习 ^xm-23407ba59d5e4982b07fa044f3
- 告警→取证→工单流程
- 只读 ChatOps 命令与审批式写操作
- ✅ 验收标准 ^xm-fec81bebfe70495cac8157fd97
- 自动化白名单
- 所有动作可审计
- 失败进入 DLQ
- 支持 dry-run/rollback
- 🔗 对应优秀开源项目 ^xm-2f6bfe6dbb574feb8c60d8de4c
-
keephq/keep
备注(源图文本,未作运行验证):
定位:开源告警管理与 AIOps 平台 源码阅读:provider→alert→dedup/correlation→workflow 实战:汇聚 Prometheus/Grafana 告警并去重关联 注意:AI 总结不能替代确定性路由和审计 整理日期:2026-07-09- 原链接(未复核):
https://github.com/keephq/keep
- 原链接(未复核):
-
robusta-dev/robusta
备注(源图文本,未作运行验证):
定位:K8s 告警增强与自动化处置 源码阅读:alert webhook→enrichment→playbook→sink 实战:为 OOM/Pending/CrashLoop 自动补充证据 注意:自动修复必须白名单、幂等、可回滚 整理日期:2026-07-09- 原链接(未复核):
https://github.com/robusta-dev/robusta
- 原链接(未复核):
-
- 🎯 目标 ^xm-297fc5d0f326422d9b629a2e21
- Shell 生产脚本 ^xm-52d8d318e6834fc7828ac3a85c
-
★ [新增] 基础设施即代码 IaC
- Terraform/OpenTofu ^xm-e2429144d34c4679b4729f3de6
- Provider 与资源图
- State 与远端锁
- Module 复用
- Plan/Apply 审批
- 漂移检测
- Secret 管理
- 配置管理 ^xm-a948d1aaf60b44c0b313610f41
- 幂等性
- Inventory
- Role/Collection
- 模板与变量
- 变更预览
- 回滚策略
- 镜像与初始化 ^xm-747323bffab04a9abf99d5ff4c
- Packer
- cloud-init
- 不可变基础设施
- Terraform/OpenTofu ^xm-e2429144d34c4679b4729f3de6
-
★ [新增] 运维开发规范
- Shell 严格模式与 ShellCheck
- Python 虚拟环境、依赖锁定与测试
- Go 单二进制运维工具
- API、Webhook 与事件驱动自动化
- 日志、重试、超时、幂等和审计
-
⚑ [纠错] Ansible(Agentless 配置管理)
备注(源图文本,未作运行验证):
Ansible 通常通过 SSH/WinRM 管理目标节点,不要求常驻 Agent;“无客户端”容易与完全无依赖混淆。- ansible 任务执行模式 ^xm-1j15ma2s4vl4mc47u2j36thpvf
- ad-hoc(点对点)模式 ^xm-30nrpvgn5fuok0kumjkpn0ggg6
- 1.ping模块 ^xm-77tbq14voj4k4m6e9dtkt8kpsg
- ansible test1 -m ping
- 2.Command 模块 ^xm-6joqsnpfduf3io24k27a7gjcls
- ansible test1 -m command -a ‘creates /app’
- 3.shell 模块 ^xm-714al5t21u6rdlp8sld08plkk7
-
ansible test1 -m shell -a ‘cat /etc/passwd |grep root’
-
需要赋权时,使用mode=644即可: ansible hosts -m shell -a “content=‘hello wo(详见备注)
备注(源图文本,未作运行验证):
原节点完整内容: 需要赋权时,使用mode=644即可: ansible hosts -m shell -a "content='hello world' mode=644 dest=/SOMEPATH/TO" -
ansible hosts -m shell -a “cat /etc/passwd | awk -F: ‘{print $1,$7}’” (这里$需要转义符)
-
- 4.copy 模块 ^xm-12d271j5f9kmfgvgamdsgdtcd1
-
需要添加新文件时,使用copy模块 ansible hosts -m shell -a “content=‘hello worl(详见备注)
备注(源图文本,未作运行验证):
原节点完整内容: 需要添加新文件时,使用copy模块 ansible hosts -m shell -a "content='hello world' dest=/SOMEPATH/TO "
-
- 5.file 模块
- 6.cron 模块 ^xm-2ps60npjipn4plmrudo8d0k1em
-
使用cron模块时,指定需要的时间格式就好,不指定的默认为* ansible hosts -m cron -a “minute=(详见备注)
备注(源图文本,未作运行验证):
原节点完整内容: 使用cron模块时,指定需要的时间格式就好,不指定的默认为* ansible hosts -m cron -a "minute=*/5 job='/sbin/ntpdate 192.168.110.101 > /dev/null 2>&1' name=Synctime" 这样执行的结果为: */5 * * * * /sbin/ntpdate 192.168.110.101 > /dev/null 2>&1
-
- 7.script 模块 ^xm-3p0usk5dua701ab1p3n0ie3pk9
-
script模块,直接在对端跑脚本,无需将脚本布在各个主机上: ansible hosts -m script -a”/SOME(详见备注)
备注(源图文本,未作运行验证):
原节点完整内容: script模块,直接在对端跑脚本,无需将脚本布在各个主机上: ansible hosts -m script -a"/SOMEFILE/TO"
-
- 1.ping模块 ^xm-77tbq14voj4k4m6e9dtkt8kpsg
- playbook(剧本)模式-YAML ^xm-0p95db0s1mflr35j41nuahaghq
-
ansible配置公钥验证
-
① 首先生成秘钥 ssh-keygen -t rsa -P ‘密码’ ② 然后向其他主机分发公钥: ssh-copy-id ro(详见备注)
备注(源图文本,未作运行验证):
原节点完整内容: ① 首先生成秘钥 ssh-keygen -t rsa -P '密码' ② 然后向其他主机分发公钥: ssh-copy-id root@192.168.1.213
-
-
Ansible-playbook的核心元素: Hosts:应用主机 Tasks:任务 Varilables:变量 Templat(详见备注)
备注(源图文本,未作运行验证):
原节点完整内容: Ansible-playbook的核心元素: Hosts:应用主机 Tasks:任务 Varilables:变量 Templates:包含了模板语法的文本文件 Handlers:由特定条件触发的任务 Roles:角色 -
Playbook的基础组件: hosts: 运行指定任务的目标主机 remoute_user: 在远程主机上执行任务的用户 ta(详见备注)
备注(源图文本,未作运行验证):
原节点完整内容: Playbook的基础组件: hosts: 运行指定任务的目标主机 remoute_user: 在远程主机上执行任务的用户 tasks: 任务列表 handlers: 在特定条件下触发的任务 notify: 执行发生change后,通知给handlers的 name,才会执行handlers tags: 打标签,ansible-playbook -t 标签名调用 -
Ansible-playbook实例模板
-
Using alternate directory locations: - hosts: test user: root(详见备注) ^xm-519bmc3qjs5q044g59rho5m00d
备注(源图文本,未作运行验证):
原节点完整内容: # Using alternate directory locations: - hosts: test user: root tasks: - name: ssh-copy authorized_key: user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" tags: - sshkey -
--- - hosts: test1 指定主机组,可以是一个或多个组 remote_user: root 指定远程主机执行的(详见备注)
备注(源图文本,未作运行验证):
原节点完整内容: --- - hosts: test1 #指定主机组,可以是一个或多个组 remote_user: root #指定远程主机执行的用户名 tasks: #任务列表 - name: check tasks #名称为检查进程 command: 'netstat -tunlpa' #调用command模块 检查任务 - name: start zabbix-agent #任务开启zabbix客户端 shell: '/usr/local/zabbix/sbin/zabbix_agentd' #启动zabbix的客户端 - name: check zabbix-agent #命名检查zabbix进程是否开启 shell: 'ps -ef|grep zabbix'
-
-
检查yml文件的语法错误命令
- ansible-playbook XXX.yml —syntax-check
-
- ansible-galaxy模式 ^xm-6ui46g7hgkh9r6dqom7er3hbbp
- ansible-galaxy role init <role_name>
- 子目录:roles,files,templates,vars,handlers ^xm-3n1tshlqi8nhbr5g9a0oa0l3nf
- 图片引用(本次未导出图片字节):
xap:resources/65e37629bd0c78c51b5312de74ab7a8f4581ad22060cdc88d548f4c2c05a0088
- 图片引用(本次未导出图片字节):
- ad-hoc(点对点)模式 ^xm-30nrpvgn5fuok0kumjkpn0ggg6
- 配置管理 ^xm-2fpuev3ni0j3h20giti96v7u2b
- 通过playbook或者roles动态生成不同环境的application.yml
- ansible 任务执行模式 ^xm-1j15ma2s4vl4mc47u2j36thpvf
-
开发
- python ^xm-2upgor11va70756r8ofhdt9ash
- 元组和列表的区别 ^xm-7g4t31u69ac1r5gpvs9m1bsaac
- 元组不可修改,列表可更改插入
- django框架 ^xm-7coaath5lotbhc5a3hg6ja3l7i
-
⚑ [纠错] Django MVT 模式
备注(源图文本,未作运行验证):
Django 通常描述为 Model、View、Template;与经典 MVC 的职责映射需结合 Django 术语理解。- model模型
- view视图
- controller控制器
-
- 多版本环境控制软件: virtualenv
- Selenium 自动化爬虫
- 元组和列表的区别 ^xm-7g4t31u69ac1r5gpvs9m1bsaac
- go
- java
- JavaScript
- python ^xm-2upgor11va70756r8ofhdt9ash
-