Ansible

1. 它是个啥?

  • 无代理 :它不像其他软件要在被控制的电脑上装东西。只要被控电脑能联网、能用SSH (Linux)或WinRM (Windows),Ansible 就能通过SSH远程过去干活。

  • 傻瓜式 :写的是 YAML 格式的剧本,长得像配置文件,没有编程基础也能看懂。

2. 核心概念

  • 控制节点:就是你手里那台装了 Ansible 的电脑,负责发号施令。

  • Inventory :通讯录 。一个文本文件,里面写着你管哪些机器,比如 [webserver] 组里放着 192.168.1.1 和 192.168.1.2。

  • Module :工具箱里的工具 。Ansible 自带几百个工具,比如 copy 是拷贝文件,yum 是装软件,service 是重启服务。你只需要说"用 copy 模块",它就知道怎么干活。

  • Playbook :剧本/菜谱 。就是一系列操作的步骤文档。比如"先装 Nginx,再把配置文件拷过去,最后启动服务"。剧本里的每一步叫 Task。

  • Idempotence :不管执行多少次,结果都一样。比如你写了"确保 Nginx 是安装状态"。如果没装,它就装;如果已经装了,它就略过。这保证了你可以反复执行剧本而不会把系统搞乱。

3. 常用命令

  • ansible :临时执行一条命令。比如 ansible all -m ping 就是测试通讯录里所有机器通不通。

  • ansible-playbook :执行写好的剧本。比如 ansible-playbook install_nginx.yml。

4. 执行过程

  1. 你敲下命令。

  2. Ansible 读取 Inventory(看看要操作谁)。

  3. 通过 SSH 连上去。

  4. 把你的指令(模块)翻译成 Python 脚本,通过 SSH 推送到远程机器上执行。

  5. 执行完了自动销毁脚本,不留痕迹。

5. 常用模块(工具)

  • ping:测机器是否活着。

  • command / shell:远程跑命令(shell 能识别 | 和 >,command 更安全但功能少)。

  • copy / fetch:往机器传文件 / 从机器取文件。

  • yum / apt / pip:装软件包。

  • template:传文件的高级版,支持变量替换(比如根据不同的机器,把配置里的 IP 改成它自己的)。

  • file:管理文件、目录的权限和状态。

6. 变量与事实

  • Variables :变量 。比如写剧本时不用写死端口,写成 {``{ http_port }},实际执行时传进去。

  • Facts :自动采集的机器信息。Ansible 在执行前会先偷看一下机器的 IP、CPU、内存、操作系统版本,把这些信息存起来,你在剧本里可以直接用。

7. 怎么组织项目

通常一个项目长这样:

text

复制代码
site.yml           # 总入口剧本
webservers.yml     # 专门给 web 服务器用的剧本
dbservers.yml      # 给数据库用的
group_vars/        # 组变量,比如 webserver 组都安装哪个目录
host_vars/         # 某台机器的私密变量(比如密码)
roles/             # 高级用法,把装nginx、装mysql拆成独立的“角色”

8. 高级点

  • Roles :标准化组件。把一堆任务、文件、变量打包成一个文件夹,像搭积木一样复用。比如"nginx_role",以后装 Nginx 直接调用它就行,不用再写一遍步骤。

  • Ansible Vault :密码保管箱。用来加密 yml 文件里的密码,避免把密码明文写在代码里。

  • Handlers :触发器。只有在任务发生改变时才执行。比如改了配置文件,才去重启服务;如果没改,就不重启,避免不必要的重启。

总结(三句话)

  1. SSH 是通道 ,你只要能在终端里 ssh 通那台机器,Ansible 就能管。

  2. YAML 是语言,把操作步骤像写菜谱一样写下来,就是自动化。

  3. 幂等性是灵魂,不管跑多少遍,系统状态都是你期望的那个样子。

相关推荐
逗脑IDE1 小时前
零基础学ESP32:RFID无线射频卡——让ESP32拥有“刷卡“能力!
开发语言·网络·人工智能·python·esp32·硬件开发
协皓家具1 小时前
2026年广州岛台吧台椅厂家有啥新变化
大数据·运维·python·devops
yuniko-n1 小时前
【Java】字符串相关坑点
java·开发语言·python
用户019027581611 小时前
如何用 Python 统计 A 股连续涨停(几连板)?
python
外收内放1 小时前
Python基础语法练习题(拓展1)
python·游戏
H_unique2 小时前
Chat2Excel:接口自动化测试
python·测试工具·自动化
ss2732 小时前
AI全栈实战 | 3.3-02 Python 并发:有 GIL 为什么还用多线程,asyncio 和 JS 事件循环同源不同味
开发语言·javascript·python
空心木偶☜2 小时前
Langgraph操作时常见的错误
python·ai·ai编程·langgraph
cpolar技术支持2 小时前
外网测试机的异常传不回内网?自托管 Sentry,用 cpolar 打通错误上报链路
python·nginx·docker·cpolar·sentry
小小龙学IT2 小时前
Python SQLAlchemy 2.0 深度解析:从 Core 到 ORM 的数据访问双引擎
开发语言·数据库·python