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. 幂等性是灵魂,不管跑多少遍,系统状态都是你期望的那个样子。

相关推荐
JavaWeb学起来2 小时前
Python学习教程(一)环境安装,基本数据类型,变量
开发语言·python·python基础
迷藏4942 小时前
# 发散创新:用 Rust实现高性能测试框架的底层逻辑与实战演练
java·开发语言·后端·python·rust
chushiyunen2 小时前
python单例模式、大模型一次加载多次复用
开发语言·python·单例模式
威联通安全存储2 小时前
某大型电力装备制造企业:基于威联通NAS的核心图纸保护与数据治理实践
python
Kang.Charles3 小时前
python读取环境变量
python
Birdy_x3 小时前
Python进阶(1)- logging
python
飞翔的烤鸡翅3 小时前
Kilo Code在PyCharm上的一些实践
ide·python·pycharm·ai编程·kilo code
Roselind_Yi3 小时前
从线性回归实战到Python依赖安装踩坑:我的机器学习入门排雷记
笔记·python·算法·机器学习·回归·线性回归·学习方法