ansible部署本质是构建“控制端→被控端”自动化链路,核心为安装控制端、ssh免密连接被控端、编写playbook执行逻辑;不依赖常驻服务,仅需ssh和python环境。

Ansible 服务器搭建与配置本质是建立一个“控制端→被控端”的自动化管理链路,核心在于三件事:装好控制端、连上被控端、写好执行逻辑。它不依赖服务进程常驻,也不需要在被控端装任何软件,靠的是 SSH 和 Python —— 所以不是传统意义上的“服务器搭建”,而是“自动化控制环境部署”。
控制端安装与基础准备
控制端是你发号施令的机器,可以是本地笔记本、跳板机或专用运维服务器。
- 安装 Ansible:CentOS/RHEL 系统先启用 EPEL 源(yum install -y epel-release),再执行 yum install -y ansible;Ubuntu/Debian 直接 apt install -y ansible
- 验证安装:ansible --version 查看版本,确认 Python 环境(建议 3.8+)可用
- 默认配置目录为 /etc/ansible/,其中 hosts 是主机清单文件,ansible.cfg 是可选配置(多数场景无需修改)
被控端连接:SSH 免密是关键
Ansible 通过 SSH 登录被控端执行任务,必须实现免密码登录,否则无法批量操作。
针对Linux系统,phpStudy团队推出全网首家linux docker容器面板,只要一个命令,快速安装面板,在面板里可以自行选择软件版本,可以方便的进行安全配置,就算没有Linux基础也可以快速搭建和管理PHP服务器环境!
- 在控制端生成密钥:ssh-keygen -t ed25519 -f ~/.ssh/ansible_id -N ""(不设密码)
- 将公钥推送至每台被控端:ssh-copy-id -i ~/.ssh/ansible_id.pub user@192.168.1.10(user 需有 sudo 权限)
- 测试连通性:ansible all -m ping -u user -k(首次用 -k 输密码验证;配置好密钥后可省略)
主机清单(Inventory)配置
这是 Ansible 知道“管谁、怎么分组”的依据,支持静态文件或动态脚本。
- 编辑 /etc/ansible/hosts 或自定义路径(如 inventory.ini)
- 基础写法示例:
[web] 192.168.1.10 ansible_user=deploy ansible_ssh_private_key_file=~/.ssh/ansible_id 192.168.1.11 [db] 192.168.1.20 ansible_become=yes
- 支持变量注入(如 ansible_python_interpreter=/usr/bin/python3),适配不同系统 Python 路径
第一个 Playbook:跑通初始化流程
用 YAML 写一个简单剧本,完成基础加固和工具安装,验证整套链路是否生效。
- 新建 init.yml,内容包含更新系统、禁用 root 远程登录、安装常用工具等任务
- 执行:ansible-playbook -i inventory.ini init.yml
- 常见报错排查方向:被控端是否装了 Python(python3 --version)、SSH 是否允许密钥登录、用户是否有 sudo 权限(加 become: true)
整个过程不需要启动任何守护进程,也不用维护服务状态。只要 SSH 通、Python 有、权限对,Ansible 就能工作。后续扩展只需增加 Playbook 或 Role,结构清晰,易于复用和版本管理。










