Go to file
徐天晟 54beae02bf Initial commit 2025-08-29 17:59:20 +08:00
docker Initial commit 2025-08-29 17:59:20 +08:00
docs Initial commit 2025-08-29 17:59:20 +08:00
inventory Initial commit 2025-08-29 17:59:20 +08:00
playbooks Initial commit 2025-08-29 17:59:20 +08:00
roles Initial commit 2025-08-29 17:59:20 +08:00
scripts Initial commit 2025-08-29 17:59:20 +08:00
.gitignore Initial commit 2025-08-29 17:59:20 +08:00
QUICKSTART.md Initial commit 2025-08-29 17:59:20 +08:00
README.md Initial commit 2025-08-29 17:59:20 +08:00
ansible.cfg Initial commit 2025-08-29 17:59:20 +08:00
requirements.txt Initial commit 2025-08-29 17:59:20 +08:00

README.md

Ubuntu Server Automation Project

这个项目用于自动化配置Ubuntu 22.04服务器包括Docker安装、基础工具配置、安全设置等。

项目结构

server-automation/
├── README.md
├── requirements.txt
├── ansible.cfg
├── inventory/
│   ├── hosts.yml
│   └── group_vars/
│       └── all.yml
├── playbooks/
│   ├── main.yml
│   ├── docker.yml
│   ├── basic-setup.yml
│   └── security.yml
├── roles/
│   ├── common/
│   │   ├── tasks/main.yml
│   │   ├── handlers/main.yml
│   │   └── templates/
│   ├── docker/
│   │   ├── tasks/main.yml
│   │   ├── handlers/main.yml
│   │   └── templates/
│   │       └── daemon.json.j2
│   └── security/
│       ├── tasks/main.yml
│       └── templates/
├── scripts/
│   ├── setup.sh
│   └── quick-deploy.sh
├── docker/
│   ├── docker-compose.yml
│   ├── nginx/
│   ├── mysql/
│   └── redis/
└── docs/
    ├── installation.md
    └── usage.md

快速开始

1. 安装依赖

# 安装Ansible
pip install -r requirements.txt

# 或者使用系统包管理器
sudo apt update
sudo apt install ansible

2. 配置目标服务器

编辑 inventory/hosts.yml:

all:
  children:
    webservers:
      hosts:
        server1:
          ansible_host: 192.168.1.10
          ansible_user: root
        server2:
          ansible_host: 192.168.1.11
          ansible_user: ubuntu
    databases:
      hosts:
        db1:
          ansible_host: 192.168.1.20
          ansible_user: ubuntu

3. 配置变量

编辑 inventory/group_vars/all.yml:

# 基础配置
timezone: "Asia/Shanghai"
locale: "en_US.UTF-8"

# Docker配置
docker_proxy_enabled: false
docker_proxy_http: "http://proxy.example.com:8080"
docker_proxy_https: "http://proxy.example.com:8080"

# 镜像加速器
docker_registry_mirrors:
  - "https://docker.mirrors.ustc.edu.cn"
  - "https://hub-mirror.c.163.com"

# 用户配置
create_user: true
username: "deploy"
user_shell: "/bin/bash"

# 安全配置
disable_root_login: false
ssh_port: 22
ufw_enabled: true

4. 运行配置

# 测试连接
ansible all -m ping -i inventory/hosts.yml

# 运行完整配置
ansible-playbook -i inventory/hosts.yml playbooks/main.yml

# 只配置Docker
ansible-playbook -i inventory/hosts.yml playbooks/docker.yml

# 只配置安全设置
ansible-playbook -i inventory/hosts.yml playbooks/security.yml

功能特性

基础系统配置

  • 系统更新和基础软件包安装
  • 时区和本地化设置
  • 用户创建和权限配置
  • SSH密钥管理

Docker环境

  • Docker CE 最新版本安装
  • Docker Compose 安装
  • 代理配置支持
  • 国内镜像源配置
  • 容器日志轮转配置

安全配置

  • UFW防火墙配置
  • SSH安全加固
  • 自动安全更新
  • 系统监控工具

开发工具

  • Git, Vim, Curl等常用工具
  • Node.js, Python3, Go等运行环境可选
  • 数据库客户端工具

支持的服务组件

Web服务

  • Nginx
  • Apache
  • Caddy

数据库

  • MySQL/MariaDB
  • PostgreSQL
  • Redis
  • MongoDB

监控

  • Prometheus + Grafana
  • ELK Stack
  • Zabbix

CI/CD

  • Jenkins
  • GitLab Runner
  • Drone CI

使用场景

  1. 新服务器初始化: 一键配置新的云服务器
  2. 环境一致性: 确保开发、测试、生产环境配置一致
  3. 批量部署: 同时配置多台服务器
  4. 灾难恢复: 快速重建服务器环境
  5. 团队协作: 团队成员使用统一的配置标准

高级功能

1. 滚动更新

# 逐台更新,减少服务中断
ansible-playbook -i inventory/hosts.yml playbooks/main.yml --serial 1

2. 条件部署

# 只在特定条件下执行某些任务
ansible-playbook -i inventory/hosts.yml playbooks/main.yml --tags "docker,security"

3. 变量覆盖

# 临时覆盖变量
ansible-playbook -i inventory/hosts.yml playbooks/main.yml -e "docker_proxy_enabled=true"

4. Vault加密

# 加密敏感信息
ansible-vault encrypt inventory/group_vars/all.yml

扩展开发

添加新角色

  1. roles/ 目录下创建新角色目录
  2. 定义tasks、handlers、templates
  3. 在主playbook中引用

自定义模板

  • Jinja2模板语法
  • 支持条件渲染和循环
  • 可以引用变量和facts

集成CI/CD

  • GitHub Actions示例配置
  • 自动测试和部署
  • 配置验证和回滚

最佳实践

  1. 版本控制: 所有配置文件都应纳入Git管理
  2. 环境隔离: 不同环境使用不同的inventory文件
  3. 密钥管理: 使用Ansible Vault加密敏感信息
  4. 幂等性: 确保playbook可以重复运行
  5. 文档化: 详细记录每个角色和变量的用途
  6. 测试: 在虚拟机中测试配置后再应用到生产环境

故障排查

常见问题

  • SSH连接失败 → 检查网络和认证配置
  • 权限不足 → 确认用户有sudo权限
  • 软件包安装失败 → 检查网络和镜像源
  • 服务启动失败 → 查看系统日志

调试技巧

# 详细输出
ansible-playbook -i inventory/hosts.yml playbooks/main.yml -vvv

# 检查模式(不实际执行)
ansible-playbook -i inventory/hosts.yml playbooks/main.yml --check

# 逐步执行
ansible-playbook -i inventory/hosts.yml playbooks/main.yml --step

贡献指南

欢迎提交Issue和Pull Request来改进这个项目

许可证

MIT License