Ansible之项目实战--多节点LAMP环境部署
项目实战:多节点LAMP环境部署
一、 Playbook案例:
- name: 部署LAMP集群
hosts: all
become: yes
vars:
mysql_root_password: "{{ vault_mysql_password }}" # 从Vault加载
tasks:
- name: 安装公共包
apt:
name: ["vim", "git", "htop"]
state: present
when: ansible_os_family == 'Debian'
- name: 配置防火墙
ufw:
rule: allow
port: "{{ item }}"
loop: [80, 443, 22]
- name: 部署Apache (Web节点)
include_tasks: roles/apache/tasks/main.yml
when: "'web' in group_names"
- name: 部署MySQL (DB节点)
include_tasks: roles/mysql/tasks/main.yml
when: "'db' in group_names"
二、排查技巧
- SSH连接失败
- 检查ansible_user是否有sudo权限
- 验证SSH密钥是否添加至authorized_keys
- 使用-vvvv参数查看详细连接过程
- 变量未定义错误
# 错误:Variable 'http_port' is undefined
- debug: var=http_port
# 修复:在group_vars或playbook中定义变量
- 模块参数错误
# 错误:缺少必填参数 'name'
- apt: state=present
# 修复:添加name参数
- apt: name=nginx state=present