来源快照|自动化与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 通过
          • 重复执行结果一致
          • 错误时非零退出且可恢复
      • 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
          • 依赖可复现
          • 核心逻辑有单测
          • 超时/限流/取消正确
      • 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
      • 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-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
      • 事件驱动自动化与 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
    • ★ [新增] 基础设施即代码 IaC

      • Terraform/OpenTofu ^xm-e2429144d34c4679b4729f3de6
        • Provider 与资源图
        • State 与远端锁
        • Module 复用
        • Plan/Apply 审批
        • 漂移检测
        • Secret 管理
      • 配置管理 ^xm-a948d1aaf60b44c0b313610f41
        • 幂等性
        • Inventory
        • Role/Collection
        • 模板与变量
        • 变更预览
        • 回滚策略
      • 镜像与初始化 ^xm-747323bffab04a9abf99d5ff4c
        • Packer
        • cloud-init
        • 不可变基础设施
    • ★ [新增] 运维开发规范

      • 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"
        • 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
      • 配置管理 ^xm-2fpuev3ni0j3h20giti96v7u2b
        • 通过playbook或者roles动态生成不同环境的application.yml
    • 开发

      • python ^xm-2upgor11va70756r8ofhdt9ash
        • 元组和列表的区别 ^xm-7g4t31u69ac1r5gpvs9m1bsaac
          • 元组不可修改,列表可更改插入
        • django框架 ^xm-7coaath5lotbhc5a3hg6ja3l7i
          • ⚑ [纠错] Django MVT 模式

            备注(源图文本,未作运行验证):

            Django 通常描述为 Model、View、Template;与经典 MVC 的职责映射需结合 Django 术语理解。
            • model模型
            • view视图
            • controller控制器
        • 多版本环境控制软件: virtualenv
        • Selenium 自动化爬虫
      • go
      • java
      • JavaScript